Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1401362
  • 博文数量: 343
  • 博客积分: 13098
  • 博客等级: 上将
  • 技术积分: 2862
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-06 00:35
文章存档

2012年(131)

2011年(31)

2010年(53)

2009年(23)

2008年(62)

2007年(2)

2006年(36)

2005年(5)

分类:

2012-03-04 19:53:41

我有个文件叫“合同”,在发送前:
1、我对“合同”进行MD5计算得到“合同的MD5_1”。
2、用我的私钥对“合同的MD5_1”,得到“合同的签名”。

我把“合同”和“合同的签名”发给了你,你现在校验合同是否未被修改:
1、你对“合同”进行MD5计算得到“合同的MD5_2”。
2、你用我的公钥对"合同的MD5_我"解密,得到“合同的MD5_1”。
3、比较“合同的MD5_1”和“合同的MD5_2”,如果相同则说明未被修改。


一、发送方A

生成私钥:

OpenSSL> genrsa -passout pass:123456 -out apri.pem 1024

生成公钥:

OpenSSL> rsa -passin pass:123456 -pubout -in apri.pem -out apub.pem

B的公钥加密数据:

OpenSSL> rsautl -encrypt -pubin -inkey bpub.pem -in data.txt -out edata.txt

计算数据的消息摘要:

OpenSSL> dgst -sha1 -out md.txt data.txt

A的私钥给消息摘要签名:

OpenSSL> rsautl -sign -inkey apri.pem -in md.txt -out signature.bin

edata.txtsignature.bin发送给接收方B

 

二、接收方B

生成私钥:

OpenSSL> genrsa -passout pass:654321 -out bpri.pem 1024

生成公钥:

OpenSSL> rsa -passin pass:654321 -pubout -in bpri.pem -out bpub.pem

 

B的私钥解密数据:

OpenSSL> rsautl -decrypt -inkey bpri.pem -in edata.txt -out data.txt

计算data.txt的信息摘要:

OpenSSL> dgst -sha1 -out ms2.txt data.txt

A的公钥解密数字签名:

OpenSSL> rsautl -verify -pubin -inkey apub.pem -in signature.bin -out ms3.txt

最后比较:ms2.txt ms3.txt内容完全相同:

SHA1(data.txt)= ad6910d33d5f96cbd7b9b3378107b8b04ba1c138


阅读(1023) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~