您好,登錄后才能下訂單哦!
這篇文章主要講解了“一次性密碼本加密的方式是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“一次性密碼本加密的方式是什么”吧!
一次性密碼本即Vernam Cipher,是由Gilbert Vernam在1917年, 開發的一種加密算法。
之所以叫做一次性密碼本,是因為加密所用的密鑰是一次性的,即密鑰只會使用一次,不會出現因為密鑰泄露導致之前的加密內容被解密。
即使密鑰被泄露了,也只會影響一次通信過程。
通常來說,如果我們想將一個消息加密傳輸需要做什么工作呢?
在現代計算機社會,大家都知道計算機只能表示0,1這兩個數字,那么如果傳輸文字,則需要將文字轉換為對應的二進制編碼。
現有的編碼規則有很多,比如:ASCII,Unicode等,在后續的文章中我們會做介紹。
同樣的,對于編碼過后的文字進行加密,就是將編碼過后文字的二進制通過一定的bit運算,而得到加密后的結果。
回到一次性密碼本,他的加密方式非常簡單,就是將明文和一串隨機的二進制進行XOR運算。這個隨機的二進制數可以通過不斷的拋擲硬幣來產生(正面表示1,反面表示0):
將明文編碼,即轉換為二進制。
生成和明文二進制位數相同的密鑰。
將明文和密鑰的二進制進行XOR操作,生成最后結果。
加密之后我們怎么去做解密呢? 我們先看一下XOR的特性。
XOR是指異或操作,比特位上的數字一樣,異或的結果就是0,比特為上面的數字不一樣,異或的結果就是1。
舉個例子:
0 XOR 0 = 0
0 XOR 1 = 1
1 XOR 0 = 1
1 XOR 1 = 0
異或的一個非常重要的特性就是可逆,即:
A XOR B= C ,則 C XOR B = A 。
那么通過原文和密鑰異或得到的結果,可以通過將結果和密鑰再次異或操作得到原文。
這就是一次性密碼本的解密過程:將密鑰和結果進行異或。
雖然一次性密碼本非常簡單,但是一次性密碼本是無法破譯的,這個破譯并不是指現有的計算能力不夠,而是指即使擁有無窮大的計算能力也無法破譯。
為什么呢?
假如你拿到了加密的結果,然后遍歷等長的密鑰進行暴力破解,最后你會生成原文,假設這個原文長度是128bit,那么就可以生成2的128次方個原文,即128bit長度的原文的所有組合排列。
即使這些組合里面出現了一些有意義的文字,但是你不能確定這些文字是不是就是原文,因為在所有的組合排列中可能生成多個有意義的文字。
所以這種解密是無意義的,就像是我知道了原文的長度,然后自己構造這個長度的原文。
既然一次性密碼本這么好,那么為什么我們在實際的工作中很少用到呢?
密鑰太長
一次性密碼本是用與原文等長的密鑰做異或得到的,如果原文很大,那么相應的密鑰也非常大。
無法重用密鑰
每個密鑰只用一次,即是缺點也是優點。意味著我們每次都要不停的更換密鑰,增加了復雜性。
密鑰的配送
因為密鑰和原文以及密文都是等長的,目標端如果想解密就必須拿到密鑰,如果能夠機密的傳輸密鑰給目標端,那為什么不直接將原文機密的傳送給目標端呢?
密鑰的保存
每次加密都需要換一個密鑰,這意味著每一個明文都需要保存一個同樣長度的密鑰,如果明文已經可以很好的保存了,那何必多做一步加密呢?
感謝各位的閱讀,以上就是“一次性密碼本加密的方式是什么”的內容了,經過本文的學習后,相信大家對一次性密碼本加密的方式是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。