數(shù)字簽名在數(shù)據(jù)的交互中一直都占據(jù)著很重要的地位,因此,這篇文章對其原理進(jìn)行整理總結(jié)一下。最后再給出代碼的實(shí)現(xiàn)。
一、簡單認(rèn)識(shí)
相信我們都寫過信,在寫信的時(shí)候落款處總是要留下自己的名字,用來表示寫信的人是誰。我們簽的這個(gè)字就是生活中的簽名:
而數(shù)字簽名呢?其實(shí)也是同樣的道理,
他的含義是:在網(wǎng)絡(luò)中傳輸數(shù)據(jù)時(shí)候,給數(shù)據(jù)添加一個(gè)數(shù)字簽名,表示是誰發(fā)的數(shù)據(jù),而且還能證明數(shù)據(jù)沒有被篡改。
OK,數(shù)字簽名的主要作用就是保證了數(shù)據(jù)的有效性(驗(yàn)證是誰發(fā)的)和完整性(證明信息沒有被篡改)。下面我們就來好好的看一下他的底層實(shí)現(xiàn)原理是什么樣子的。
二、基本原理
為了理解的清楚,我們通過案例一步一步來講解。話說張三有倆好哥們A、B。由于工作原因,張三和AB寫郵件的時(shí)候?yàn)榱税踩夹枰用?。于是張三想到了?shù)字簽名:
整個(gè)思路是這個(gè)樣子的:
上面的流程我們使用一張圖來演示一下:
首先把公鑰送給朋友A和B:
打開UC瀏覽器 查看更多精彩圖片
然后呢,就是朋友A或者B給張三發(fā)郵件:
還有就是最后一個(gè)比較麻煩的,張三給A或者B發(fā)郵件:
OK,上面的這幾張圖想必你應(yīng)該能夠理解清楚了,其實(shí)還有一些很復(fù)雜的情況,因?yàn)樯厦娴臄?shù)字簽名是在理想狀態(tài)下完成的,但是如果遇到了公鑰錯(cuò)誤,摘要不正確該如何處理呢?這里就涉及到數(shù)字證書了,我們來分析一下。
三、數(shù)字證書
上面提到我們對簽名進(jìn)行驗(yàn)證時(shí),需要用到公鑰。如果公鑰是偽造的,那我們無法驗(yàn)證數(shù)字簽名了,也就根本不可能從數(shù)字簽名確定對方的合法性了。這時(shí)候證書就閃亮登場了。我們可能都有考各種證書的經(jīng)歷,比如說普通話證書,四六級證書等等,但是歸根結(jié)底,到任何場合我們都能拿出我們的證書來證明自己確實(shí)已經(jīng)考過了普通話,考過了四六級。這里的證書也是同樣的道理。
如果不理解證書的作用,我們可以舉一個(gè)例子,比如說我們的畢業(yè)證書,任何公司都會(huì)承認(rèn)。為什么會(huì)承認(rèn)?因?yàn)槟鞘菄野l(fā)的,大家都信任國家。也就是說只要是國家的認(rèn)證機(jī)構(gòu),我們都信任它是合法的。
那么這個(gè)證書是如何生成的呢?我們再來看一張圖:
此時(shí)即使張三的朋友A把公鑰弄錯(cuò)了,張三也可以通過這個(gè)證書驗(yàn)證。
四、代碼驗(yàn)證
常用的數(shù)字簽名算法有:RSA、DSA、ECDSA。這里的代碼參考了慕課網(wǎng)。下面給出三種方式的代碼實(shí)現(xiàn):
1、RSA
2、DSA
3、ECDSA
代碼已經(jīng)在這里了,可以自己去實(shí)現(xiàn)一遍即可。
1.《電腦簽名 數(shù)字簽名的原理是什么?》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無關(guān),侵刪請聯(lián)系頁腳下方聯(lián)系方式。
2.《電腦簽名 數(shù)字簽名的原理是什么?》僅供讀者參考,本網(wǎng)站未對該內(nèi)容進(jìn)行證實(shí),對其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請保留本站內(nèi)容來源地址,http://f99ss.com/keji/346629.html