首页
社区
课程
招聘
[作品提交]RSA加密解密的实现
发表于: 2008-6-28 12:06 11980

[作品提交]RSA加密解密的实现

2008-6-28 12:06
11980

这学期刚学密码学,RSA算法相对简单,于是写了这个小软件.开发环境:VC++6.0。  
    RSA的安全性依赖于大数分解。公钥和私钥都是两个大素数。据猜测,从一个密钥和密文推断出明文的难度等同于分解两个大素数的积。
    数据加密算法RSA的关键在于大素数的生成,本软件采取数组形式解决大素数的存储和运算问题,可生成超过1024位的十进制数的大素数,以应用于数据加密。
    RSA的缺点主要有:产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。分组长度太大,为保证安全性,n 至少也要 600 bits以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。
密钥生成步骤:
1,选两个保密的大素数p,q
2,计算n=p*q,计算欧拉函数值(p-1)*(q-1)
3,选一个整数e,且e小于欧拉函数值并且大于1,同时满足e与欧拉函数值互质
4,再选一个整数d,满足d是e在模欧拉函数值下的乘法逆员,因e与欧拉函数值
互质,由模运算可知它的乘法逆员一定存在。
5,以PK={e,n}为公钥,SK={d,n}为私钥。
加密:
先将明文比特数分组,使分组对应的10进制数小于n,然后对每个分组作加密运算
c=(m^e)mod(n),c就是密文
解密:
对密文分组进行m=(c^d)mod(n)
以上计算涉及到信息安全数学基础和现代密码学的知识,请参考《现代密码学(第二版)》和《信息安全数学基础》
均为清华大学出版社出版。

RSA是一个较为完善的公钥密码算法,不仅能够用于加密,还能用于签名,是被广泛
研究的公钥密码算法,从提出到现在20多年,经历了各种攻击的考验,被普遍认为是目前最
优秀的公钥密码算法之一。随着人类计算能力的不断提高,原来被认为是不肯能分解的大数已被
成功分解。1994年贝尔实验室用1600台计算机耗时8个月(用时4600年)成功分解RSA-129,就是n为129位10进制数。
在当前一般商业领域,用的是RSA-155(约512比特)是安全的。估计在未来一段比较长的时期,密钥长度介于1024至
2048比特之间的RSA是安全的。
软件界面:

    对于明文是字母、数字、符号、汉字的各种组合都能正确加密解密
测试数据:
加密密钥:
{E, N} = { 4058909522923781627, 153870764068524986667864920209111888657}

解密密钥:
{D, N} = { 14781867977920790397315320392274696923,
     153870764068524986667864920209111888657}
明文:放假过来玩儿!<>:L"*)(&fafg5435
密文:   

60723915094460019985764292058618742154703013068749621244689639385694447422914889064196589028269619112

0965431827171
解密后:放假过来玩儿!<>:L"*)(&fafg5435

下图是软件执行性能的测试结果


下图是软件流程图:


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (11)
雪    币: 372
活跃值: (31)
能力值: ( LV12,RANK:410 )
在线值:
发帖
回帖
粉丝
2
沙发~~         
2008-6-28 14:30
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
图都挂了。。。。
2008-6-28 16:00
0
雪    币: 261
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
这种好东西不顶还行!祝你能成功得奖啊!好东西我就不客气收下了!
2008-6-30 19:24
0
雪    币: 375
活跃值: (12)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
5
首先感谢一下楼主,这种密码学工具对我等菜鸟确实有用。
但我对密码学0了解,楼主能否介绍一些资料/网站呢。。

不胜感激。

PS,楼主使用静态库编译一个吧。。。
2008-6-30 22:54
0
雪    币: 65
活跃值: (811)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
6
谢谢分享!!!
2008-7-1 08:58
0
雪    币: 109
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
这几天快考试了,所以没对RSA解释清楚......
2008-7-1 09:25
0
雪    币: 333
活跃值: (11)
能力值: ( LV12,RANK:770 )
在线值:
发帖
回帖
粉丝
8
VS2005编不过去,似乎BigNumber的库找不到,有人指点一下吗
2008-7-4 22:48
0
雪    币: 109
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
BigNumber.dll, BigNumber.lib, BigNumber.h都在压缩包里面。
2008-7-5 08:15
0
雪    币: 333
活跃值: (11)
能力值: ( LV12,RANK:770 )
在线值:
发帖
回帖
粉丝
10
我看到这些文件了,可就还是编不过去
2008-7-5 13:57
0
雪    币: 109
活跃值: (11)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
Projects->Settings->Link->Object/Library modules:BigNumber.lib
2008-7-8 16:02
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
我的天那,你才大学就知道那么多啊!你才上大学啊!就会密码学了吗?!哎!我什么时候才能追的上你啊!
2008-9-29 04:25
0
游客
登录 | 注册 方可回帖
返回
//