#鱼C五周年嘉年华#《C趣味》--第二发
本帖最后由 kklloo 于 2015-1-30 20:21 编辑啦啦啦啦 一个星期终于过去啦 第一期的最终排名也出来啦大家可以看这里哟:点我点我
第二期是什么呢? 楼主这里想跟大家一起来学习一种加密算法,那就是RSA算法 。 下面简单的介绍一下这个算法
RSA公钥密码体制描述如下:<1>. 选取两个大素数p,q。<2>. 计算n=pq, Φ(n)=(p-1)(q-1)。<3>. 随机选取正整数e, 1<e<Φ(n), 满足gcd(e,Φ(n)) = 1。<4>. 计算d,满足de≡1(mod Φ(n))。p,q,Φ(n), d是保密的,丢弃p,q,Φ(n);只保留d,则n,d为私钥;n,e是公开,为公钥。<5>.加密变换:对明文m, 1<m<n, 加密后的密文为 c = me(mod n)。<6>.解密变换:对密文c, 1<c<n, 解密后的明文为 m = cd(mod n)。
上面就是rsa的具体实现过程那么问题来了 一下几个问题 任意实现 实现功能越多 分越多 请用代码实现一下功能:(1)选取两个大素数(能够解决溢出问题的加分)(2)判断两个数是互质的?(3)判断输入的e是否满足要求的?(4)已知e,p,q,用代码求的d (可以采用穷举,也可以采用辗转相除等)(5)1求一个数的二进制(在实现加密或者解密功能时如果使用模重复平方法会用到求一个数的二进制数)(5)实现加密功能(6)实现解密功能
{:5_92:}等大家的好消息哟。能实现整个功能的当然会加分的哟。
排名传递:点我点我
页:
[1]