天天看点

密码学——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是公钥密码系统,加密密钥是公开的,而对于取幂密码,一旦知道了加密密钥,很快能求出解密密钥。但是如果不知道加密密钥,破解取幂密码是困难的,这个困难性叫做寻找离散对数的困难性,离散对数问题和分解整数问题有一样的计算难度,所以有一些公钥密码系统是建立在寻找离散对数的困难性上,比如埃尔伽莫密码系统。

继续阅读