免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3375 | 回复: 0
打印 上一主题 下一主题

[信息安全] RSA - 欧拉数定理 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-15 20:23 |只看该作者 |倒序浏览
1,余数性质
(a^b) mod n = ((a mod n) ^ b ) mod n;
(a * b) mod n = ((a mod n) * (b mod n)) mod n;
……

2,欧拉数定理
一个数n,比n小且与n互质的数的个数为欧拉数,记做∮(n);同时,这∮(n)个素数集合,记做Z(n)。

定理:如果m < n,且与n互质,那么:
m^∮(n) mod n = 1;

证明:
设Z(n) = {x1, x2, x3, ... x∮(n)}
构造集合s = {(x1 * m) mod n, (x2 * m) mod n, (x3 * m) mod n, ... (x∮(n) * m) mod n};

先证明两个集合相等:
1,任取xi, xj, i != j, 那么 xi != xj, 也即 xi mod n != xj mod n,所以:
(xi * m) mod n != (xj * m) mod n;
2,xi 和 n互质,m和n互质,那么xi * n mon n 也和 n 互质。所以:
s = Z(n);

所以:Z(n)每个元素相乘等于s每个元素相乘。
(x1 * x2 * x3 ... x∮(n)) mod n =
(((x1 * m) mod n) * ((x2 * m) mod n) * ((x3 * m) mod n) * ... * ((x∮(n) * m) mod n)) mod n;
右边 = (((x1 * x2 * x3 ... x∮(n)) mod n) * (m^x∮(n) mod n)) mod n;
两边约掉(x1 * x2 * x3 ... x∮(n)) mod n,得到:
1 = m^x∮(n) mod n;

3,RSA

由 2 变换一下,得到:
m^(k * ∮(n) + 1) mod n = m;
k为任意大于0整数。

指定 n = p * q,p, q为素数,那么:
∮(n) = (p - q) * (q - 1);

构造 e * d = k * (p - 1) * (q - 1) + 1,那么:
m^(e * d) mod n = m;

变换一下,得到:
((m^e) mod n)^d mod n = m;

令:
c = (m^e) mod n;
那么:
m = (c^d) mond n

取(d, n)为私钥,那么(e, n)为公钥。
m为明文,c为密文。

公钥(e, n) 加密 明文m,得到密文c,一般用于加密:
c = (m^e) mod n

私钥(d, n) 解密 密文c,得到明文m,一般用于解密:
m = (c^d) mod n

私钥(d, n) 加密 明文m,得到密文c,一般用于签名:
c = (m^d) mod n

公钥(e, n) 解密 密文c,得到明文 m,一般用于验证签名:
m = (c^e) mod n

4,RSA二进制数据 和 大数之间转换,以及 加密填充
参考:RFC2313(PKCS #1 v1.5)

转换:
先输入的在左侧的是数的高位,是一个字节一个字节的。
每个字节表示8位的即 0~(2^8 - 1),
RFC2313中OCT String,8进制字符串。


填充

如果是公钥操作:
00 02 非零随机数 00 原文

如果私钥操作:
00 01 FF FF FF ... FF FF 00 原文

[ 本帖最后由 yuanchengjun 于 2008-4-15 21:06 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP