没有合适的资源?快使用搜索试试~ 我知道了~
实验4 非对称密码算法RSA.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 28 浏览量
2023-02-22
22:26:32
上传
评论
收藏 208KB DOCX 举报
温馨提示
试读
15页
。。。
资源推荐
资源详情
资源评论
实验 4 非对称密码算法 RSA(验证型)
一、 实验目的
通过实际编程了解非对称密码算法 RSA 的加密和解密过程,加深对非对称
密码算法的认识。
二、 实验原理
对称密码算法要求通信双方通过交换密钥实现使用同一个密钥,这在密钥的
管理、发布和安全性方面存在很多问题,而非对称密码算法解决了这个问题。加
密密钥和解密密钥是不同的,其中加密密钥是可以公开的,解密密钥是要求保密
的,并且不能用其中的一个推导出另一个。它的安全性是建立在“大数分解和素
性检测”这个数论难题的基础上,即将两个大素数相乘在计算上容易实现,而将
该乘积分解为两个大素数因子的计算量相当大。虽然它的安全性还未能得到理论
证明,但经过 30 年的密码分析和攻击,迄今仍然被实践证明是安全的。
三、 实验环境
运行 Windows或者 Linux 操作系统的 PC 机,具有 gc(c Linux)、VC(Windows)
等 C 语言编译环境。
四、 实验内容和步骤
1、为了加深对
算法的了解,根据已知参数: p 3,q 11,M 2,手工
RSA
计算公私钥,并对明文进行加密,然后对密文进行解密。
2、编写 RSA 程序,加密一段文字,了解 RSA 算法原理。尝试加密一大段文
字,记录程序的运行时间。使用 DES 算法加密相同的文字,比较两种算法加密
的速度。
3、编写一个程序,随机选择 3 个 较大的数 x,e,n ,计算 x mod n ,记录 程
e
序运行时间。
查阅资料给出简单说明大数在计算机上是如何表示,如何进行运算。
4、查阅资料,找出目前实际可行的素数判定法则,并比较各自的优缺点。
五、
实验步骤
1、
p=3,q=11
则 n=pq=33,f(n)=20,选择 e=7,则 d=3
那么加密得 c=29
解密得 m=2
2、打开 VC++,编写程序如下:
#include<stdio.h>
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
//using namespace std;
typedef struct RSA_PARAM_Tag
{ //64 位数
unsigned __int64
unsigned __int64
unsigned __int64
unsigned __int64
unsigned __int64
p, q; //两个素数,不参与加密解密运算
f; //f=(p-1)*(q-1),不参与加密解密运算
n, e; //公匙,n=p*q,gcd(e,f)=1
d;
s;
//私匙,e*d=1 (mod f),gcd(n,d)=1
//块长,满足 2^s<=n 的最大的 s,即 log2(n)
} RSA_PARAM;//小素数表,用于素性测试前,用小素数来初步筛选素数.
const static unsigned __int64
g_PrimeTable[]=
{
3,
5,
7,
11,
13,
17,
19,
23,
29,
31,
37,
41,
43,
47,
53,
59,
61,
67,
71,
73,
79,
83,
89,
97
};
const static long
g_PrimeCount=sizeof(g_PrimeTable) / sizeof(long);
//乘数
const unsigned __int64 multiplier=12747293821;
// 加数
const unsigned __int64 adder=1343545677842234541;
//随机数类
class
{
RandNumber
private:
unsigned __int64
public:
RandNumber(unsigned __int64 s=0);
unsigned __int64 Random(unsigned __int64 n);
};/* */
randSeed;/* */
RandNumber::RandNumber(unsigned __int64 s)
{
if(!s)
{
剩余14页未读,继续阅读
资源评论
xxpr_ybgg
- 粉丝: 6509
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功