數字簽名與加密解密

2022-02-26 21:31:44 字數 2688 閱讀 5496

有關數字簽名與加密解密的文章我看了許多次,基於這樣的事實——我總是說服不了自己,所以每次看都看不明白,說服不了自己。最近在看oauth的相關東西,數字簽名與加密解密是繞不開了,乾脆靜下心來,看看資料,嘗試著將自己說服.

1,加密解密基礎

簡單地講,計算機加密無非是,用金鑰k,對明文p加密,得到密文m:

k(p) = m

解密就是將這個過程反過來:

k(m) = p

對於金鑰k,有兩種選擇方式:對稱加密,不對稱加密。

a,對稱加密:   加密解密,都用同乙個key

b,不對稱加密:加密解密用不同的key(金鑰對vk和sk),比如加密用vk,則解密用sk。反之亦然,如果你用sk加密,則用vk來解密。

2,數字簽名

數字簽名實際上起到兩個作用:1,驗證。2,加密。

這裡的驗證指的是,驗證傳送訊息人的身份,以防偽造者。而加密指的是將明文加密,以防被偷看。

數字簽名既可以用"對稱加密"來實現,也可以用"不對稱加密"來實現。

3,採用對稱加密來實現數字簽名

說明:

a,使用對稱加密(加密,解密使用相同的金鑰)。

b,需要第三方仲裁者

資源:

a,兩個金鑰(記住,加密/解密用同乙個金鑰),分別稱之為ka和kb

角色:

alice: (明文pa,金鑰ka,密文ma)

bob: (明文pb,金鑰kb,密文mb)

trent:同時擁有(ka,kb)

步驟:

a,alice將明文pa經過金鑰ka加密,得到密文ma。

b,alice將ma傳給trent

c,仲裁者trent用ka解密ma,得到pa

d,仲裁者trent用pa加上alice的身份證,再加上trent自己的身份證

e,trent將上面的(aliceid+trentid+pa),經過金鑰kb加密,得到mb。

f,trent將mb傳給bob

g,bob用kb來解密mb,得到pa,alice的身份證和trent的身份證

備註:

由於在金鑰只有trent知道,在網路上傳輸的都是密文,所以不怕被偷看。

其次,金鑰變換過程是trent完成的,這裡trent是可信的。所以不存在偽造問題。

什麼?alice不承認發過pa,我找trent說理去。

4,採用不對稱加密實現數字簽名

說明:

a,採用不對稱加密技術

b,用公鑰加密的東西,只有私鑰能解開,同樣用私鑰加密的東西,只有公鑰能解開

c,使用兩個金鑰對(每個金鑰對包含公鑰/私鑰各乙個),不需要第三方仲裁就可以完成數字簽名

資源:

a,第一對金鑰對,公鑰vk-a,私鑰sk-a

b,第二對金鑰對,公鑰vk-b,私鑰sk-b

角色:

alice:明文pa,第一對私鑰sk-a,vk-a/vk-b

bob:  第二對sk-b,vk-a/vk-b

crack:因為公鑰是可以公開的,所以crack很容易搞到了兩個公鑰vk-a/vk-b,怎麼來的?或許是google得到的吧,誰知道呢。

步驟:

a,alice先將明文pa用私鑰sk-a加密(這一步起到防抵賴的作用,只有alice有私鑰sk-a)

b,alice再將上面的結果用公鑰vk-b加密(這一步起到加密的作用,只有bob的私鑰sk-b能解開)

c,alice將經過上面步驟得到的密文ma,發給bob

d,防不勝防啊,有人想偷看,結果愣是沒有看懂(嘿嘿,只有bob有sk-b這個神器)

e,還有人想偽造,好吧,算你狠,你能得到公鑰,所以你能產生vk-a(x),vk-b(x)

f,bob收到了三個東西:ma,vk-a(x)和vk-b(x)

g,先用自己的私鑰sk-b(ma)=>sk-a(pa), 然後再用公鑰vk-a(sk-a(pa))=>pa,哈哈,alice來訊息了。

h,vk-a(x),什麼東西?先用sk-b試試,啥也看不到嘛!

i, vk-b(x),啥東西?先用sk-b解開看看,原來是x啊。再用vk-a試試,啥也看不到嘛,肯定不是alice。(記住vk-a只能解alice的私鑰sk-a加密的內容,別人沒有sk-a)

備註:

資訊在網路上傳輸都是加密過的,不怕被偷看。

什麼?你有vk-a,能看到alice經過私鑰加密的東西,但他媽的alice每次傳送的都是經過vk-b加密過的密文。

由於alice傳送的東西經過自己的私鑰sk-a和bob的公鑰vk-b同時加過密,不怕被偽造(沒有私鑰,咋造啊),不怕被抵賴(只有你alice才能用sk-a加密,我用vk-a解開的東西,肯定是你alice發的)。

參考資料:

加密解密,數字簽名及證書

三重des desede 112和168兩種金鑰長度,抗窮舉能力顯著增強,但由於進行了多重des迭代,造成處理速度慢,效率不高 高階資料加密標準aes 128和192及256三種金鑰長度,搞窮舉能力強,速度比des系列加密快,為替代des系列加密演算法而生 訊息傳送方使用金鑰對明文加密,並將密文傳送...

加密與數字簽名

加密與數字簽名 加密與數字簽名 一 加密 資料加密技術從技術上的實現分為在軟體和硬體兩方面。按作用不同,資料加密技術主要分為資料傳輸 資料儲存 資料完整性的鑑別以及金鑰管理技術這四種。在網路應用中一般採取兩種加密形式 對稱金鑰和公開金鑰,採用何種加密演算法則要結合具體應用環境和系統,而不能簡單地根據...

數字簽名與數字加密

數字簽名主要經過以下幾個過程 資訊傳送者使用一單向雜湊函式 hash函式 對資訊生成資訊摘要 資訊傳送者使用自己的私鑰簽名資訊摘要 資訊傳送者把資訊本身和已簽名的資訊摘要一起傳送出去 資訊接收者通過使用與資訊傳送者使用的同乙個單向雜湊函式 hash函式 對接收的資訊本身生成新的資訊摘要,再使用資訊傳...