天天看點

密碼學——RSA密碼系統的前身取幂密碼

作者:酷學線上課堂

前面講過RSA密碼系統的原理,可以看到加密的形式是明文資料的幂次方然後取某數模的剩餘,這種就叫做基于模的取幂密碼,是以取幂密碼是RAS密碼的一個基礎,在1978年由波裡格和黑爾曼發明。用取幂密碼加密,需要一個奇素數p和加密密鑰e,并且它們滿足(e,p-1)=1,也就是e和p-1是互質的。

加密方法是将明文資料分成長度為偶數位的資料組,并且使得所有組的資料都小于p,資料長度盡可能長。若明文資料組P是位數為2m的整數,下面生成密文資料組C:

密碼學——RSA密碼系統的前身取幂密碼
密碼學——RSA密碼系統的前身取幂密碼

例子:試着用p=2633,e=29加密“I like math”。

首先将“I like math”轉化為對應的數字,A到Z分别對應0到25,是以“I like math”轉化為數字就是081108100412001907,下一步将資料分組。取資料組的維數為4,這樣每一組的資料一定小于p,得到0811,0810,0412,0019,0700,最後一組資料加上“00”湊成四位。下面進行加密運算。

密碼學——RSA密碼系統的前身取幂密碼
密碼學——RSA密碼系統的前身取幂密碼

這樣0811加密後就變成2520,其餘4組資料都按照該過程加密,0810對應的密文是0854,0412對應的密文是0668,0019對應的密文是0293,0700對應的密文是0735,密文資料就是2520 0854 0668 0293 0735,于是“I like math”加密後的密文就是2520 0854 0668 0293 0735。現在嘗試通過解密密鑰解密,看能否得到明文。

由于d是e模p-1的逆,,是以d就是滿足下面同餘方程的解:

密碼學——RSA密碼系統的前身取幂密碼
密碼學——RSA密碼系統的前身取幂密碼

現在用解密密鑰2269對2520進行解密。

密碼學——RSA密碼系統的前身取幂密碼
密碼學——RSA密碼系統的前身取幂密碼

恰好是明文的資料0811,0811轉換成語言字元即 IL ,其他的資料段解密過程相同。可以看到取幂密碼的加密解密方法與RSA公鑰密碼系統很相似,不同的是RSA是公鑰密碼系統,加密密鑰是公開的,而對于取幂密碼,一旦知道了加密密鑰,很快能求出解密密鑰。但是如果不知道加密密鑰,破解取幂密碼是困難的,這個困難性叫做尋找離散對數的困難性,離散對數問題和分解整數問題有一樣的計算難度,是以有一些公鑰密碼系統是建立在尋找離散對數的困難性上,比如埃爾伽莫密碼系統。

繼續閱讀