版權歸原作者所有,如有侵權,請聯(lián)系我們

[科普中國]-一次性密碼本

科學百科
原創(chuàng)
科學百科為用戶提供權威科普內(nèi)容,打造知識科普陣地
收藏

一次性密碼本(One-time Pad;OTP)是密碼學中的一種加密算法。是以隨機的密鑰(key)組成明文,且只使用一次。1

介紹一次性密碼本(One-time Pad;OTP)是密碼學中的一種加密算法。是以隨機的密鑰(key)組成明文,且只使用一次。這種方法在1882年被弗蘭克·米勒(Frank Miller)發(fā)現(xiàn),并沿用至今。

安全性在理論上,此種密碼是牢不可破的,而它的安全性已由克勞德艾爾伍德·香農(nóng)(Claude Elwood Shannon)所證明。

雖然它在理論上的安全性無庸置疑,但在實際操作上卻有著以下的問題:

用以加密的文本,也就是一次性密碼本,必須是無特定規(guī)律的。它可以是一串隨機數(shù)字,一句話,或者一本英文名著。

它必須至少比被加密的文件等長。

用以加密的文本(密碼本)只能用一次,且必須對非關系人小心保密,不再使用時,用以加密的文本應當要銷毀,以防重復使用。

加密方法首先手上要有一本一次性密碼本用以加密文件,接著將一次性密碼本里的字母,與被加密文件的字母給依序按某個事先約定的規(guī)定一一相混,其中一個相混的作法是將字母指定數(shù)字(如在英語中,將A至Z依序指定為0至25)然后將一次性密碼文本上的字母所代表的數(shù)字和被加密文件上相對應的數(shù)字給相加,再減去該語言的字母數(shù),假設是n(如英語為26),若就此得出來的某個數(shù)字小于零,則將該小于零的數(shù)給加上n,如此便完成加密。

舉個例子,若要加密訊息“This is an example”,而用以加密的一次性密碼本如下所示:

MASKL NSFLD FKJPQ

則利用指定數(shù)字的方法,可分別將兩者給做以下的轉(zhuǎn)換:

This is an example → 19 7 8 18 8 18 0 13 4 23 0 12 15 11 4

MASKL NSFLD FKJPQ → 12 0 18 10 11 13 18 5 11 3 5 10 9 15 16

兩者依序相加后得到的訊息如下:

31 7 26 28 19 31 18 18 15 26 5 22 24 26 20

將以上得到的訊息模26后可得:

5 7 0 2 7 5 8 8 11 0 5 22 24 0 20

它也就變成了

FHACHFIILAFWYAU

而若要解密以上信息,反向操作即可。

本詞條內(nèi)容貢獻者為:

王沛 - 副教授、副研究員 - 中國科學院工程熱物理研究所