利用数字证书来加密解密数据和数字签名
Java 6提供了完善的数字证书管理实现,我们几乎无需关注相关具体算法,仅通过操作密钥库和数字证书就可完成相应的加密/解密和签名/验证操作。密钥库管理私钥,数字证书管理公钥,私钥和密钥分属消息传递两方,进行加密消息传递。
因此,我们可以将密钥库看做私钥相关操作的入口,数字证书则是公钥相关操作的入口。
?
首先用keytools产生密钥库
?
1.打开cmd?
?
2.输入d:? 回车
?
3.输入下面的命令
keytool -genkey -dname "CN=localhost, OU=NC, O=Shanghai University, L=ZB, ST=Shanghai,C=CN" -alias test -keyalg RSA -keystore test.keystore -keypass 123456 -storepass 123456 -validity 1000
?
这样就创建了名叫test的一个密钥库,密钥库文件是test.keystore
?
密钥库包含私钥 公钥 还有其他信息等。
?
4.导出公钥证书
keytool -export -trustcacerts -alias test -file PublicKey.cer -keystore test.keystore -storepass 123456
?
这样就创建了一个公钥文件 PublicKey.cer
?
可以在密钥库中获得私钥,在PublicKey.cer中获得公钥。然后就可以利用私钥 公钥来操作了。
?
获得私钥和公钥后,就可以进行加密解密了,和我之前的文章非对称加密中一样。可以私钥加密公钥解密,也可以公钥加密私钥解密。
?
当然,获得公钥私钥后,也可以使用私钥进行数字签名,然后用公钥来验证签名。
?
关于加密解密和数字签名操作,如下代码:(注:代码来自《JAVA 加密与解密的艺术》一书)
SHACoderTest.java
?
??
?