rsa公钥加密时,明文为什么不能大于N
2012-01-11 13:28
1236 查看
rsa加解密公式
设A为明文,B为加密后的密文
加密过程 B=A^e mod n;
解密过程 A=B^d mod n;
从公式上可以看出,加解密时数据会mod n,那么大于N的数据,都会发生回绕,失去原有属性。
举例
1)生成密钥对
a)选两个素数,为P和Q
设P = 13, Q = 7
则N = p * q = 91
b)选择E,要求e 和 ( p - 1 ) * ( q - 1 )互质
(p-1)*(q-1) = 12 * 6 = 72,选择E = 7则可以。
现在 N = 91, E = 7
c)选择D,要求(d*e) mod (p-1)*(q-1) = 1。
(p-1)*(q-1)的值是72,所以
( d * e ) mod 72 = 1,( d * e )可以是73, 145, 217..........
选d * e = 217,则d = 31
2)加解密过程
a)设A为明文,B为密文,
加密过程 B=A^e mod n;
解密过程 A=B^d mod n;
b)加密
设a = 2 则 a ^ e = 2 ^ 7 = 128, mod 91 = 37,则 37为密文
b = 37
c)解密
b ^ d = 37 ^ 31 = 4.1138973036067710421568685993113e+48, mod 91 = 2
解密结果等于明文,加解密成功
d)若明文 大于 n,假设 a等于93
a ^ e = 93 ^ 7 = 60170087060757, mod 91 = 37,则密文还是37
对37进行解密,得到的明文是2,与原始输入数据不一致
所以明文 不能 大于 N
设A为明文,B为加密后的密文
加密过程 B=A^e mod n;
解密过程 A=B^d mod n;
从公式上可以看出,加解密时数据会mod n,那么大于N的数据,都会发生回绕,失去原有属性。
举例
1)生成密钥对
a)选两个素数,为P和Q
设P = 13, Q = 7
则N = p * q = 91
b)选择E,要求e 和 ( p - 1 ) * ( q - 1 )互质
(p-1)*(q-1) = 12 * 6 = 72,选择E = 7则可以。
现在 N = 91, E = 7
c)选择D,要求(d*e) mod (p-1)*(q-1) = 1。
(p-1)*(q-1)的值是72,所以
( d * e ) mod 72 = 1,( d * e )可以是73, 145, 217..........
选d * e = 217,则d = 31
2)加解密过程
a)设A为明文,B为密文,
加密过程 B=A^e mod n;
解密过程 A=B^d mod n;
b)加密
设a = 2 则 a ^ e = 2 ^ 7 = 128, mod 91 = 37,则 37为密文
b = 37
c)解密
b ^ d = 37 ^ 31 = 4.1138973036067710421568685993113e+48, mod 91 = 2
解密结果等于明文,加解密成功
d)若明文 大于 n,假设 a等于93
a ^ e = 93 ^ 7 = 60170087060757, mod 91 = 37,则密文还是37
对37进行解密,得到的明文是2,与原始输入数据不一致
所以明文 不能 大于 N
相关文章推荐
- 为什么RSA公钥每次加密得到的结果都不一样?
- c# RSA 加密解密 java.net公钥私钥转换 要解密的模块大于128字节
- 关于JAVA中RSA加签解签,私钥加密公钥解密和公钥加密私钥解密代码步骤
- RSA加解密使用总结,.net私钥加密公钥解密,WinCE平台RSA加解密
- Go语言rsa使用生成公钥私钥,GO使用rsa加密解密
- C#使用RSA进行私钥加密公钥解密
- 银联手机支付(.Net Csharp),3DES加密解密,RSA加密解密,RSA私钥加密公钥解密,.Net RSA 3DES C#
- RSA加解密使用总结,.net私钥加密公钥解密,WinCE平台RSA加解密
- C#使用RSA进行私钥加密公钥解密
- RSA加密:Windows Phone 公钥加密,Java私钥解密
- 关于Android 使用服务器公钥RSA加密 数据到服务器RSA解密报错问题
- python 加密 解密 签名 验证签名 公钥 私钥 非对称加密 RSA
- RSA 公钥加密——私钥解密
- Python 进行RSA私钥加密,公钥解密
- 银联手机支付(.Net Csharp),3DES加密解密,RSA加密解密,RSA私钥加密公钥解密,.Net RSA 3DES C#
- 关于JAVA中RSA加签解签,私钥加密公钥解密和公钥加密私钥解密代码详解
- 【学习笔记】加密技术之公钥与RSA
- C# 与JAVA 的RSA 加密解密交互,互通,C#使用BouncyCastle来实现私钥加密,公钥解密的方法
- RSA不对称加密,公钥加密私钥解密,私钥加密公钥解密
- 为什么oracle中rownum只能小于,不能大于