java加密解密的学习
注:此文章只是对如何学习java加密解密技术做一个讲解。并不涉及具体的知识介绍,如果有需要请留言,有时间我补冲长。个人觉着学习一个学习方法比学习一个知识点更有价值的多。
首先,对于加密解密知识体系没有了解的同学,不建议去看什么《java加密与解密的艺术》。因为此书大多是对关于加密解密的java API的讲解,即使硬着头皮看完,也会是水里雾里的一片模糊。所以初学者还不建议直接阅读这类型书。但是初学者如何学习呢?
首先,应该先搞清一些加密、解密的概念,比如AES、RSA、MD5等是什么东西,以及相关的数字签名、数字摘要还有数字证书。对于搞清楚这些概念,一定要与实际应用相结合,那样才会更容易理解。知道了各种加密、解密算法的用途和应用场景,那么就可以说你基本了解了加密解密的知识。
经常有人对数字签名、数字证书搞混,在次我就以这个概念为例讲解一下:
什么是数字签名?数字签名的用途是神马?
数字签名就是用私钥对数据的md5值进行加密。那用途是什么?我举个例子,比如甲公布了一个程序,但是怎么认出这个程序就是甲发布的呢。这就需要甲对程序先进行md5然后用手里的私钥进行加密,所谓数字签名。这里私钥只有甲持有,别人不可能有这个私钥。但大家都可以拥有甲私钥对应的公钥。这样大家拿到程序后,可以先对甲的数字签名用公钥解密,然后将程序md5后与解密后的私钥对比,如果相同,则说明程序确实是甲的并且没有被别人篡改。(md5就是数字摘要,既不同的数据计算出的md5值不可能相同。私钥和公钥匙是对应关系,属于非对称加密。)现在相信你能理解数字签名的用途了。就是用来证明某个东西是某人的。
那什么是数字证书啊?用途呢?
数字证书需要签证机构颁发,当然你需要交付服务费用。数字证书就是一个证明信,里边存放着一个重要信息就是公钥。为什么这样呢,任何人都可以发布公钥,你凭什么相信这个公钥是可靠地机构发布的呢?这时就有了签证机构,比如,甲去办理数字证书时,他会给甲一个私钥,然后把私钥对应的公钥放到数字证书里(只说重要点),但这样还不够,因为你凭什么相信这个数字证书可以相信呢。这时签证机构他们自己持有一个私钥,他们会用这个私钥对证书进行数字签名,而这个私钥对应的公钥,已经被操作系统预装在系统里了,因为这个操作系统相信这个签证机构。所以电脑受到证书后会用已有的签证机构的公钥对数字证书进行验证,如果确实是签证机构颁发的,就拿出里边的公钥与甲进行通信。
这下应该知道了数字证书的用途,那就是用来发布公钥。
这是应用中的流程和应用。但是还有一些概念需要懂,比如流密码、分组密码、工作模式等,这里给出一个不错的博文的链接:http://aub.iteye.com/blog/1129339
把这些概念和应用流程和原理搞清楚了,你在学习java加密解密,应该比切菜很容易,就是熟悉API的事。
本文不是讲解加密解密知识体系讲的文章,如果有需要,可以留言,我虚写一下。
java加密解密的学习的更多相关文章
- Java加密解密字符串
http://www.cnblogs.com/vwpolo/archive/2012/07/18/2597232.html Java加密解密字符串 旧文重发:http://www.blogjava ...
- java加密解密
java加密解密 public class MD5Util { /** * @param args */ public static void main(String[] args) { System ...
- password学4——Java 加密解密之消息摘要算法(MD5 SHA MAC)
Java 加密解密之消息摘要算法(MD5 SHA MAC) 消息摘要 消息摘要(Message Digest)又称为数字摘要(Digital Digest). 它是一个唯一相应一个消息或文本的固定长度 ...
- Java加密解密大全
ChinaSEI系列讲义(By 郭克华) Java加密解密方法大全 如果有文字等小错,请多包涵.在不盈利的情况下,欢迎免费传播. 版权所有.郭克华 本讲义经 ...
- java加密解密算法位运算
一.实例说明 本实例通过位运算的异或运算符 “ ^ ” 把字符串与一个指定的值进行异或运算,从而改变每个字符串中字符的值,这样就可以得到一个加密后的字符串.当把加密后的字符串作为程序输入内容,异或运算 ...
- ◆JAVA加密解密-3DES
从数据安全谈起 当你使用网银时,是否担心你的银行卡会被盗用? 当你和朋友用QQ进行聊天时,是否担心你的隐私会被泄露? 作为开发者,编写安全的代码比编写优雅的代码更重要,因为 ...
- java加密-解密小结
加密算法可以分为 双向加密(对称加密.不对称加密) 单向加密(不可逆加密)—— MD5.sha.hmac... 在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密 有: ...
- cooking java ——加密解密
java安全与密码概述 主要分为三部分: 密码学基础,包括:相关术语:分类:常用安全体系. java的安全组成:jdk以及第三方扩展. 相关实现代码,包括:base64.MD5········ 密码学 ...
- Java加密解密相关
关于解释加密解密中的填充方案: http://laokaddk.blog.51cto.com/368606/461279/ 关于对称加密中的反馈模式: http://blog.csdn.net/aaa ...
随机推荐
- 基于SignalR的web端即时通讯 - ChatJS
先看下效果. ChatJS 是基于SignalR实现的Web端IM,界面风格模仿的是“脸书”,可以很方便的集成到已有的产品中. 项目官网:http://chatjs.net/ github地址:htt ...
- 示例篇-购物车的简单示例和自定义JS
简介: 支持平台: Android4.0,iOS7.0,Windows 10, Windows 10 mobile 说明:主要是演示listview所在的ui和模板cell所在的ui之间数据的交互,点 ...
- java提高篇(九)-----实现多重继承
多重继承指的是一个类可以同时从多于一个的父类那里继承行为和特征,然而我们知道Java为了保证数据安全,它只允许单继承.有些时候我们会认为如果系统中需要使用多重继承往往都是糟糕的设计,这个时候我们往往需 ...
- JS闭包中的this对象
我们知道,当函数被作为某个对象的方法调用时,this等于那个对象,不过,匿名函数的执行环境具有全局性,因此其this对象通常指向window. 下面代码很好的说明了这一点: var name = 'T ...
- 在ThoughtWorks工作这几年我学到了什么?
不知不觉,从2012年5月1日加入ThoughtWorks到现在,已经3年有余了.时间过得很快,这三年多我干了很多事情,但仔细想想也没有什么特别值得一提的.在一个公司呆久了总觉得很多事情是理所当然的, ...
- [译]C++, Java和C#的编译过程解析
1.1.1 摘要 我们知道计算机不能直接理解高级语言,它只能理解机器语言,所以我们必须要把高级语言翻译成机器语言,这样计算机才能执行高级语言编写的程序,在接下来的博文中,我们将介绍非托管和托管语音的编 ...
- 青蛙的约会 java版
参考http://blog.csdn.net/polossk/article/details/9799735 package acm; public class FrogDate { public s ...
- Post方式的Http流请求调用
HttpRequest公共类: public static class HttpRequestAction { /// <summary> /// 发送http请求并返回响应 /// &l ...
- Java连接Oracle数据库开发银行管理系统【三、实现篇】
说明:里面的主要代码都加的有注释部分,所以代码显得很长,如果有错误的地方,谢谢指出. 注意需要导入数据库jar包 ------------------------------------------- ...
- EF架构~通过EF6的DbCommand拦截器来实现数据库读写分离~终结~配置的优化和事务里读写的统一
回到目录 本讲是通过DbCommand拦截器来实现读写分离的最后一讲,对之前几篇文章做了一个优化,无论是程序可读性还是实用性上都有一个提升,在配置信息这块,去除了字符串方式的拼接,取而代之的是sect ...