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 ...
随机推荐
- 《利用Python进行数据分析》第5章学习笔记
pandas入门 数据结构 Series Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成.仅由一组数据即可产生最简单的Serie ...
- [leetcode 34] search for a range
1 题目: Given a sorted array of integers, find the starting and ending position of a given target valu ...
- SqlServerProxy的一些资料
SqlServerProxy的一些资料 下载地址:http://files.cnblogs.com/files/lyhabc/SqlServerProxy.rar 1.特性及实现原理 SqlServe ...
- 修改TFS2013服务账户或者密码
修改TFS2013服务账户或者密码 TFS作为微软软件开发的全生命周期管理解决方案,可以很好的与windows的域管理结合使用,方便多系统下用户的管理和授权.如果TFS使用的服务账户设置的域账户密码过 ...
- EmberJs之数组绑定@each&[]
写在前面 好长时间没有写博客了,昨天花了些时间又整理了下之前发布过的<Ember.js之computed Property>文章,并创建了一个测试代码库,花了些时间,希望能使用测试代码的方 ...
- asp.net WebApi and protobuff
protobuff 是谷歌开发的,在性能上要比Json xml好很多,对性能要求比较高的时候这个是一个不错的选择,但是这个目前只是一个序列化反序列化的东西,以前原生的只有几种语言的现在在github ...
- 【腾许Bugly干货分享】“HTTPS”安全在哪里?
背景 最近基于兴趣学学习了下 HTTPS 相关的知识,在此记录下学习心得. 在上网获取信息的过程中,我们接触最多的信息加密传输方式也莫过于 HTTPS 了.每当访问一个站点,浏览器的地址栏中出现绿色图 ...
- Angular ngClick 阻止冒泡和默认行为
这其实是一个很简单的问题,如果你认真查看过Angular官方的API文档,本来不想记录的.但是这个问题不止一次的被人问起,所以今天在记录在这里. 在Angular中已经对一些ng事件如ngClick, ...
- 浅谈Excel开发:六 Excel 异步自定义函数
上文介绍了Excel中的自定义函数(UDF ),它极大地扩展了Excel插件的功能,使得我们可以将业务逻辑以Excel函数的形式表示,并可以根据这些细粒度的自定义函数,构建各种复杂的分析报表. 普通的 ...
- osgi dm
看了http://developer.51cto.com/art/200909/154863.htm 真心感到,最强大最有组织的技术网站还是 51cto,牛人应该也是最多的. 以前逛51cto的比较少 ...