[转]密码技术-实现数字信封和数字签名
密碼技術(shù)-實(shí)現(xiàn)數(shù)字信封和數(shù)字簽名
轉(zhuǎn)載自:http://hi.baidu.com/king0332/item/ea9b19da597aec17e1f46f5b
?
?
?
數(shù)字信封是公鑰密碼體制在實(shí)際中的一個(gè)應(yīng)用,是用加密技術(shù)來保證只有規(guī)定的特定收信人才能閱讀通信的內(nèi)容。 在數(shù)字信封中,信息發(fā)送方采用對(duì)稱密鑰來加密信息內(nèi)容,然后將此對(duì)稱密鑰用接收方的公開密鑰來加密(這部分稱數(shù)字信封)之后,將它和加密后的信息一起發(fā)送給接收方,接收方先用相應(yīng)的私有密鑰打開數(shù)字信封,得到對(duì)稱密鑰,然后使用對(duì)稱密鑰解開加密信息。這種技術(shù)的安全性相當(dāng)高。數(shù)字信封主要包括數(shù)字信封打包和數(shù)字信封拆解,數(shù)字信封打包是使用對(duì)方的公鑰將加密密鑰進(jìn)行加密的過程,只有對(duì)方的私鑰才能將加密后的數(shù)據(jù)(通信密鑰)還原;數(shù)字信封拆解是使用私鑰將加密過的數(shù)據(jù)解密的過程。?
?
?
對(duì)稱加密和非對(duì)稱加密各有千秋。對(duì)稱加密實(shí)現(xiàn)簡單,加解密速度快,非對(duì)稱加密算法牢固,容易實(shí)現(xiàn)數(shù)字簽名,但是加解密速度稍慢,所以一般情況下,將對(duì)稱加密和非對(duì)稱加密結(jié)合起來應(yīng)用,就可以達(dá)到良好的加密效果。典型的應(yīng)用之一就是電子信封。
1、我們先引入幾個(gè)符號(hào)和一個(gè)概念
M 明文信息 C 密文信息 E 加密算法??D 解密算法??Ke 公鑰??Kd 私鑰
H 散列串 SIGN 簽名
然后再介紹一個(gè)叫做MD(message digest)消息摘要的東西
消息摘要就是通過單向散列函數(shù)(Hash函數(shù))將信息運(yùn)算為一個(gè)固定長度的散列串,不管你的文件長度是多少,經(jīng)過hash函數(shù)的運(yùn)算生成的散列串的長度一定是固定的大小,比如著名的md5,生成的就是128位的串。
消息摘要有什么用呢,它可以實(shí)現(xiàn)對(duì)文件的簽名,由于不同的文件hash后得到的散列串是不一樣的,所以可以用來判斷文件是否被改動(dòng),比如病毒修改了某個(gè)文件,這個(gè)文件的大小雖然沒有變,但是hash函數(shù)計(jì)算出來的散列串肯定是不一樣的。
2、對(duì)數(shù)據(jù)進(jìn)行加密,然后發(fā)送
第一步,先用設(shè)備生成一個(gè)對(duì)稱密鑰,然后將這個(gè)密鑰用B的公鑰Ke進(jìn)行加密,生成密鑰包Ek。
第二步,對(duì)文件用hash函數(shù)計(jì)算出H=hash(M).然后再加上時(shí)間戳t,使用B的公鑰ke進(jìn)行加密,生成簽名SIGN。這里加上時(shí)間戳的目的是為了防止重放攻擊,就是如果竊聽方對(duì)竊聽到的信息進(jìn)行了重放,但是時(shí)間不對(duì),我們就可以覺察到信息傳送是否出現(xiàn)了問題。
第三步、將數(shù)字簽名SIGN和文件用對(duì)稱密鑰進(jìn)行加密,生成密文數(shù)據(jù)C。
最后,將第一步產(chǎn)生的密鑰包Ek和密文C發(fā)送給B。
3、解密的過程
第一步,B用自己的私鑰Kd解密收到的密鑰包Ek,得到A使用的對(duì)稱加密密鑰。
第二步,用對(duì)稱密鑰對(duì)收到的密文C進(jìn)行解密。
第三步,用hash函數(shù)計(jì)算文件的散列串,得到H1。
第四步,用私鑰解密簽名SIGN,得到H和時(shí)間戳。
最后,用H和H1對(duì)比,如果兩者相等,則說明文件在傳遞的過程中沒有被更改,如果時(shí)間戳標(biāo)記的也正確的話,那么此次信息安全傳遞完成。
五、實(shí)現(xiàn)不可抵賴的數(shù)字簽名
1、A用它自己的私鑰加密信息M得到C1,然后用B的公鑰加密信息C2,發(fā)送給B。
2、B收到信息后,用它的私鑰解密,得到C1這樣實(shí)現(xiàn)了第一個(gè)功能,就是確保信息只能被B正確解讀,因?yàn)閯e人沒有B的私鑰,所以只有B能解密該信息。
3、得到C1后,再用A的公鑰解密,得到明文信息M。這里實(shí)現(xiàn)了數(shù)字簽名的第二個(gè)功能,因?yàn)橹挥惺褂肁的公鑰才能解密這個(gè)信息(C1是使用A的私鑰加密 的),這樣就保證了A的不可抵賴,就是說,這個(gè)信息一定是A發(fā)出的。因?yàn)橛肁的公鑰對(duì)信息成功的進(jìn)行了解密。
所以,使用非對(duì)稱算法,可以成功的實(shí)現(xiàn)數(shù)字簽名。對(duì)成算法和非對(duì)稱算法結(jié)合起來應(yīng)用,就可以實(shí)現(xiàn)文件的安全傳遞。
?
數(shù)字信封是公鑰密碼體制在實(shí)際中的一個(gè)應(yīng)用,是用加密技術(shù)來保證只有規(guī)定的特定收信人才能閱讀通信的內(nèi)容。 在數(shù)字信封中,信息發(fā)送方采用對(duì)稱密鑰來加密信息內(nèi)容,然后將此對(duì)稱密鑰用接收方的公開密鑰來加密(這部分稱數(shù)字信封)之后,將它和加密后的信息一起發(fā)送給接收方,接收方先用相應(yīng)的私有密鑰打開數(shù)字信封,得到對(duì)稱密鑰,然后使用對(duì)稱密鑰解開加密信息。這種技術(shù)的安全性相當(dāng)高。數(shù)字信封主要包括數(shù)字信封打包和數(shù)字信封拆解,數(shù)字信封打包是使用對(duì)方的公鑰將加密密鑰進(jìn)行加密的過程,只有對(duì)方的私鑰才能將加密后的數(shù)據(jù)(通信密鑰)還原;數(shù)字信封拆解是使用私鑰將加密過的數(shù)據(jù)解密的過程。轉(zhuǎn)載于:https://www.cnblogs.com/Crysaty/p/5844774.html
總結(jié)
以上是生活随笔為你收集整理的[转]密码技术-实现数字信封和数字签名的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 一路走来 Django
- 下一篇: Linux下oracle数据库启动和关闭