RSA加密原理:
1. 数据。
数据在计算机中,其实就是字节串。
将被加密的数据,分割成一定长度的数据块,每一块就是一个bit串。
将这个比特串,看成一个二进制整数——以d表示
2. 密钥
RSA算法是非对称算法,因此使用两个密钥:
一个是公钥,用于加密——以e表示,
一个是私钥,用于解密——以p表示。
e、N,是对外公开的。而p则不对外公开。
3. 加解密
a)加密
c = d^e mod N /* d的e次方模上N,得到c,即加密后的数据*/
b)解密
d = c^p mod N /* c的p次方模上N,得到d,即原始数据*/
4. 安全性
RSA算法的安全在于,e、p、N,是随机生成的。
知道e和N,想寻找p,在计算上是不可行的。
问题是,我们使用的软件工具,生成这些随机材料时,真的是“随机”的吗?
如果算法的提供者留下什么后门,或者提前做了什么准备工作,人家看到e和n,或许就能有办法得到p呢
1. 数据。
数据在计算机中,其实就是字节串。
将被加密的数据,分割成一定长度的数据块,每一块就是一个bit串。
将这个比特串,看成一个二进制整数——以d表示
2. 密钥
RSA算法是非对称算法,因此使用两个密钥:
一个是公钥,用于加密——以e表示,
一个是私钥,用于解密——以p表示。
另外,还需要用到一个整数N,他是算法中进行模数运算时的底数。
一般来说,为了保证安全性,密钥长度应在1024-bit以上。
总之,e、p、N,这三项数据,决定一次具体的加解密活动。
同被加密数据d一样,e、p、N,这三个东东,也都是整数。
e、N,是对外公开的。而p则不对外公开。
3. 加解密
a)加密
c = d^e mod N /* d的e次方模上N,得到c,即加密后的数据*/
b)解密
d = c^p mod N /* c的p次方模上N,得到d,即原始数据*/
4. 安全性
RSA算法的安全在于,e、p、N,是随机生成的。
知道e和N,想寻找p,在计算上是不可行的。
问题是,我们使用的软件工具,生成这些随机材料时,真的是“随机”的吗?
如果算法的提供者留下什么后门,或者提前做了什么准备工作,人家看到e和n,或许就能有办法得到p呢