欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PKI体系简易JAVA实现

程序员文章站 2022-07-04 11:36:52
...

初学者,这两日对CA认证,数字签名等想要稍微了解下,从网上查了不少资料,发现很多文章中对公钥密码加密和鉴别过程(PKI体系)的某个步骤提供了具体的JAVA实现,对我的学习和了解帮助很大, 但还缺少一个完整的例子。下面就是自己动手构建完整例子的过程,如有错误或概念上的误解请指明。


1.一般公钥密码加密和鉴别过程有以下步骤:


1.获取证书

2.计算欲发送的信息或文件message消息摘要(比如用hash获取)

3.发送消息摘要给时间戳服务器TSA, 获得服务器时间签名的时间戳摘要A和时间戳B

4.将有时间戳的消息摘要用发送方的私钥加密(这里使用非对称密钥),生成数字签名

 

5.发送方随机产生一个对称密钥,用它和某种算法(比如AES)对欲发送的消息或文件加密,得到密文

 

6.发送方用接收方的公钥加密上述对称密钥和使用的算法,和密文放在一起

 

7.密文和签名通过不安全信道传送给接收方

 

8.接收方用自己的私钥 解密 “对称密钥和对称密钥算法”

 

9.接收方用得到的“对称密钥和算法”对密文进行解密,得到原始的消息或文件message

 

10. 接收方用发送方公钥解密数字签名,得到时间戳摘要A和时间戳B

 

11.接收方用TSA公钥解密时间戳摘要A,得到(消息摘要+时间戳)的hash值X

 

12.对原始消息message求hash得到新的消息摘要Y

 

13.用消息摘要Y和时间戳B的hash值与X比较验证消息是否被篡改或受到重放攻击等

 

 

2.其中涉及到的JAVA实现:

 

1. JAVA模拟TSA时间戳服务器

2. JAVA生成数字证书

3. 用RSA算法进行非对称加解密

4. 用AES算法进行对称加解密

 

3.明细(更新中):

PKI体系简易JAVA实现(一):时间戳服务器TSA

PKI体系简易JAVA实现(二):AES对称加密

 

 

4.上文中的PKI体系基本步骤参考了http://moiz.blog.163.com/blog/static/1984160020086204543472/