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 ...
随机推荐
- SecureCRT使用sz和rz命令进行文件的上传和下载
SecureCRT可以使用sz和rz命令进行文件的上传和下载. sz文件下载: 格式:sz 文件名称 即可将服务器的文件下载至本地. rz文件上传: 格式:rz 文件名称 即可将本地文件上传至服务器. ...
- linux-dns服务器搭建
1.先查看系统是否安装了bind rpm -qa|grep bind 2.如果没有安装则
- C# 通过服务启动窗体(把窗体添加到服务里)实现用户交互的windows服务[转发]
由于个人需要,想找一个键盘记录的程序,从网上下载了很多,多数都是需要注册的,另外也多被杀软查杀.于是决定自己写一个,如果作为一个windows应用程序,可以实现抓取键盘的记录.想要实现随系统启动的话, ...
- display:block 不起作用
jquery中$("#Main").css("display","none"); $("#Day").css('disp ...
- C++11新特性总结 (二)
1. 范围for语句 C++11 引入了一种更为简单的for语句,这种for语句可以很方便的遍历容器或其他序列的所有元素 vector<int> vec = {1,2,3,4,5,6}; ...
- CentOs 7怎么联网
在安装好Centos7后,网络还不能正常使用,需要我们手动配置.并且Linux的网络配置并不太容易,新手经常不知道从何开始.为了解决这个令大家头疼的问题,我在此将成功的配置过程与大家分享.希望大家都能 ...
- WPF,Silverlight与XAML读书笔记第四十三 - 多媒体支持之文本与文档
说明:本系列基本上是<WPF揭秘>的读书笔记.在结构安排与文章内容上参照<WPF揭秘>的编排,对内容进行了总结并加入一些个人理解. Glyphs对象(WPF,Silverlig ...
- 译文---C#堆VS栈(Part Two)
前言 在本系列的第一篇文章<C#堆栈对比(Part One)>中,介绍了堆栈的基本功能和值类型以及引用类型在程序运行时的表现,同时也包含了指针作用的讲解. 本文为文章的第二部分,主要讲解参 ...
- [FPGA] 1、开发板使用和引脚连接
目录 1.注意事项 2.设备简介 3.引脚分配 注意事项: ① 插拔下载线时必须断电! ② Quartus II 软件和 NIOS 软件的版本必须一致,并安装在同一个目录下面,安装目录不要有中文和空格 ...
- AngularJS快速入门指南19:示例代码
本文给出的大部分示例都可以直接运行,通过点击运行按钮来查看结果,同时支持在线编辑代码. <div ng-app=""> <p>Name: <input ...