一、概念介绍:
加密是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击。其重点在于数据的安全性。身份认证是用来判断某个身份的真实性,确认身份后,系统才可以依不同的身份给予不同的权限。其重点在于用户的真实性。两者的侧重点是不同的。
公钥/私钥:俗称的不对称加密方式,是从以前的对称加密(使用用户名与密码)方式的提高。
在现代密码体制中加密和解密是采用不同的密钥(公开密钥),也就是非对称密钥密码系统,每个通信方均需要两个密钥,即公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密。
公钥/私钥的特点:
1.公钥是公开的,私钥是由个人持有,并且必须妥善保管和注意保密。
2.公钥和私钥都可以对传输内容加解密
3.公钥用来验签,私钥用来加签(Signature)
数字证书则是由证书认证机构(CA)对证书申请者真实身份验证之后,用CA的根证书对申请人的一些基本信息以及申请人的公钥进行签名(相当于加盖发证书机构的公章)后形成的一个数字文件。CA完成签发证书后,会将证书发布在CA的证书库(目录服务器)中,任何人都可以查询和下载,因此数字证书和公钥一样是公开的。
数字证书就是经过CA认证过的公钥,而私钥一般情况都是由证书持有者在自己本地生成的,由证书持有者自己负责保管。具体使用时,签名操作是发送方用私钥进行签名,接受方用发送方证书来验证签名;加密操作则是用接受方的证书进行加密,接受方用自己的私钥进行解密。
二、Java实现
生成keystore:
keytool -genkeypair -keyalg RSA -keysize 2048 -sigalg SHA1withRSA -validity 36000 -alias www.luisyang.com -keystore luisYang.keystore
生成cer证书:
keytool -export -keystore C:Users ightluisYang.keystore -alias www.luisyang.com -file C:Users ightluisyang.cer -storepass 123123
三、其他资料介绍:
数字签名:
http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html
密码学笔记:
http://www.ruanyifeng.com/blog/2006/12/notes_on_cryptography.html
详解公钥、私钥、数字证书的概念
http://www.2cto.com/article/201208/145328.html
PKCS#12
http://www.cnblogs.com/diyunpeng/p/3535908.html
证书格式区别
http://wenku.baidu.com/view/6bdc7853336c1eb91a375dc5.html
数字证书文件cer和pfx的区别
http://blog.csdn.net/ghevinn/article/details/11927857
数字签名
http://baike.baidu.com/item/%E6%95%B0%E5%AD%97%E7%AD%BE%E5%90%8D
签名算法
http://www.cnblogs.com/sandea/p/4589438.html
java 调用 keytool 生成keystore 和 cer 证书
http://blog.csdn.net/saindy5828/article/details/11987587
关于keystore的简单介绍
http://blog.csdn.net/dotuian/article/details/51722300
java keytool 工具
http://blog.csdn.net/xiaohai0504/article/details/7598178
keytool工具应用实例详解