Chinaunix首页 | 论坛 | 博客
  • 博客访问: 147504
  • 博文数量: 44
  • 博客积分: 2085
  • 博客等级: 大尉
  • 技术积分: 455
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-31 11:03
文章分类

全部博文(44)

文章存档

2013年(3)

2011年(8)

2010年(11)

2009年(22)

我的朋友

分类: C/C++

2013-02-20 10:34:36

RSA算法:
1.找两的大素数p和q
2.取n=p*q   n的二进制表示时所占用的位数,就是所谓的密钥长度。
3. 使用奇数公钥指数eRSA数字签名方案的私钥SK由两个素数pq,满足: p-1q-1e互质 且 1

  以及私钥d,满足: e*d=1 % (p-1)*(q-1)

  组成相对应的公钥PK由公钥模n=pq和公钥指数e组成。

公钥(n, e) 私钥(n, d

    这样最终得到三个数: n   d   e

 

使用奇数公钥指数的RSA签名函数被定义为:

SSign(SK)[X]=Xd mod n0

这里X是用于签名的数据,S为对应的数字签名。

恢复函数

使用奇数公钥指数的RSA恢复函数被定义为

X=Recover(PK)[S]=Se mod n

 

RSA加解密的算法完全相同,设A为明文,B为密文,则:

  A=B**e % nB=A**d % n

e和d可以互换使用,即:

  A=B**d % nB=A**e % n;

设消息为数M (M 设c=(M**d)%n就得到了加密后的消息c
设m=(c**e)%n则 m == M,从而完成对c的解密。
注:**表示次方,上面两式中的d和e可以互换。

在对称加密中:
n d两个数构成公钥,可以告诉别人;
n e两个数构成私钥,e自己保留,不让任何人知道。
给别人发送的信息使用e加密,只要别人能用d解开就证明信息是由你发送的,构成了签名机制。
别人给你发送信息时使用d加密,这样只有拥有e的你能够对其解密。

rsa的安全性在于对于一个大数n,没有有效的方法能够将其分解
从而在已知n d的情况下无法获得e;同样在已知n e的情况下无法
求得d。

 

举例:

选p=7,q=17。 求n=p * q = 119,  T=(p-1)*(q-1)=96

取e=5,满足1

确定满足d*e=1 % 96且小于96的d, 因为77*5=385=4*96+1 ,所以d为77。

因此公钥为{5, 119}, 私钥为{77, 119};

设明文m=19, 则密文C = 19**5 % 119 =2476099 % 119 =66

解密 66**77 % 119 = 19

 

阅读(730) | 评论(0) | 转发(0) |
0

上一篇:哈稀处理

下一篇:查看linux的重启记录

给主人留下些什么吧!~~