篇一 :RSA算法实验报告

实验二非对称密码算法RSA

一、实验目的

通过实际编程了解非对称密码算法RSA的加密和解密过程,加深对非对称密码算法的认识。

二、实验环境

运行Windows或Linux操作系统的PC机,具有JDK1.6版本的Java语言编译环境。

三、实验内容和步骤

1. 对RSA算法的理解

RSA算法(公开密钥算法)的原理:

(1). 选择两个大的素数p和q(典型情况下为1024位)

(2). 计算n = p * q 和 z =(p-1)*(q-1).

(3). 选择一个与z互素的数,将它称为d

(4). 找到e,使其满足e*d = 1 mod z

提前计算出这些参数以后,我们就可以开始执行加密了。首先将明文分成块,使得每个明文消息P落在间隔0*P<n中。为了做到这一点,只要将明文划分成k位的块即可,这里k是满足2^k<n的最大整数。

为了加密一个消息P,只要计算C=P^e(mod n) 即可。为了解密C,只要计算P=C^d(mod n)即可。可以证明,对于指定范围内的所有P,加密盒解密互为反函数。为了执行加密,你需要e和n;为了执行解密,你需要d和n。因此,公钥是有(e,n)对组成,而私钥是有(d,n)对组成。

…… …… 余下全文

篇二 :RSA加密算法实验报告

四 川 大 学 计 算 机 学 院

实   验   报   告

学号:           姓名:        班级:  班           第        周试验

…… …… 余下全文

篇三 :RSA算法的实现实验报告

RSA算法的实现

一、实验目的

1. 熟悉公钥密码体制;

2.掌握产生密钥对的程序设计方法;

3.掌握产生加密/解密的程序设计方法。

二、实验内容和要求

1.进行RSA加密/解密算法的设计;

2.对RSA程序进行编译和调试;

3.使用编写的程序进行加密和解密。

三、实验环境

运行Windows操作系统的PC机,可以利用具有VC++语言环境;如果所运用的语言是JAVA,那么也可以利用JAVA语言环境来实现RSA算法的加密和解密。

四、实验步骤

1.采用C++语言进行本次实验的编写,实验的代码如下:

#include <stdio.h>

#include<conio.h>

int candp(int a,int b,int c)

{ int r=1;

b=b+1;

while(b!=1)

{

    r=r*a;

    r=r%c;

    b--;

}

printf("%d\n",r);

return r;

…… …… 余下全文

篇四 :计算机网络安全实验报告--非对称密码算法RSA


实验二非对称密码算法RSA

一、实验目的

通过实际编程了解非对称密码算法RSA的加密和解密过程,加深对非对称密码算法的认识。

二、实验环境

运行Windows或Linux操作系统的PC机,具有gcc(Linux)、VC(Windows)等C语言编译环境。

三、实验内容和步骤

1)编写一个程序,随机选择3个较大的数x、e、n,然后计算xe mod n,记录程序运行时间。实际中应用的素数为512位,n也就为1024位。这样的大数在计算机上如何表示、如何进行运算,查阅资料给出简单说明。

RSA依赖大数运算,目前主流RSA算法都建立在512位到1024位的大数运算之上,所以我们在现阶段首先需要掌握1024位的大数运算原理。

大多数的编译器只能支持到64位的整数运算,即我们在运算中所使用的整数必须小于等于64位,即:0xffffffffffffffff也就是18446744073709551615,这远远达不到RSA的需要,于是需要专门建立大数运算库来解决这一问题。

最简单的办法是将大数当作字符串进行处理,也就是将大数用10进制字符数组进行表示,然后模拟人们手工进行“竖式计算”的过程编写其加减乘除函数。但是这样做效率很低,因为1024位的大数其10进制数字个数就有数百个,对于任何一种运算,都需要在两个有数百个元素的数组空间上做多重循环,还需要许多额外的空间存放计算的进位退位标志及中间结果。当然其优点是算法符合人们的日常习惯,易于理解。

…… …… 余下全文

篇五 :RSA算法实验报告

     RSA算法的实现

一、实验目的

1、理解公钥密码体制基本原理。

2、理解并能够编写RSA算法。

3、熟练应用C++编程实现算法。

二、实验内容

利用C++编程实现RSA算法密码体制,算法描述参考课本P191-204。

三、实验原理

1、算法原理

步骤如下(这里设B为是实现着)

(1)B寻找出两个大素数p和q。

(2)B计算出n=p*q和(n)=)(p-1)*(q-1)。

(3)B选择一个随机数e(0<e<(n)),满足(e,(n))=1 (即e与欧拉函数互素(n))。

(4)B使用欧几里得算法计算e的模余(n)的乘法逆元素d。

(5)B在目录中公开n和e作为他的公开密钥,保密p、q和d。

加密时,对每一明文m计算密文

                           cΞme(modn)

…… …… 余下全文

篇六 :RSA算法实验报告

RSA算法实验报告

实验名称:RSA算法 班级:2012级网络工程 姓名:魏彦博

学好:20121070135 指导老师:赵文波

实验日期:20xx年10月10日

1、 RSA的简介

19xx年由麻省理工学院的Ronald L.Rivest、以色列魏茨曼科学中心的Adi Shamir 发表了著名的论文《A Method Obtaining Digital Signature and Public-Key Cryptosystems》(《获得数字签名和公开密钥密码系统的一种方法》),并提出了

1

一种用数论够造的、也是迄今为止理论上最为成熟完善的公钥密码技术——RSA,该技术已得到广泛应用。

2、 RSA的基本原理

RSA 是基于这样一个十分简单的数论事实而设计的:将两个大的素数想乘十分容易,但想分解它们是十分困难的,因此可将乘积公开作为加密密钥。

3、 RSA算法的描述

(1)、密钥的产生

1)、选两个保密的大素数P和q。

2)、计算n=pq,∮(n)=(p-1)(q-1),其中∮(n)是n的欧拉函数值。

3)、选一整数e,满足1<e<∮(n),且gcd(∮(n),e)=1,即∮(n)与e互质。

…… …… 余下全文

篇七 :RSA算法实验报告

实验目的

验证RSA算法的加密、解密计算过程和效果

#include <iostream>

#include "LargeNumber.h"

using namespace std;

void Euclid(LargeNumber &ek, LargeNumber &phi, LargeNumber &b2);

void Power(LargeNumber &base, LargeNumber &exponent, LargeNumber &n, LargeNumber &result);

void main()

{

LargeNumber one(1);

LargeNumber p(2,0xfaef,0x8081),q(2,0xfb88,0x1715);

LargeNumber p_1,q_1;

p_1.sub(p,one); //p_1=p-1

q_1.sub(q,one); //q_1=q-1

cout<<"Prime number p=";p.display();cout<<endl;

…… …… 余下全文

篇八 :RSA算法实验报告

计算网络安全实验报告

—RSA加密算法

学院:计算机科学与技术学院 班级: 软件外包111

姓名: 万 鹏

学号: 1113122020

一、实验目的:

通过实际编程了解非对称密码算法RSA的加密和解密过程,加深对非对称密码算法的认识。

二、实验环境:

运行Windows或Linux操作系统的PC机,具有gcc(Linux)、VC(Windows)等C语言编译环境。

三、实验内容与实验步骤:

(1)建立一个模板类HugeInt,在类里建函数Power、FullGcd、inverse。

(2)计算机在生成一个随机数时,并不一定就是素数,因此要进行素性检测。是否有确定的方法判定一个大数是素数,要查阅资料,找出目前实际可行的素数判定法则,并且比较各自的优缺点。

(3)所谓素数,是指除了能被1和它本身整除而不能被其他任何数整除的数。根据素数的定义,只需用2到N-1去除N,如果都除不尽则N是素数,结束知其循环。由此得算法1。

(4)要求x^n mod p,设立一个tmp值,当n为零时返回1,当n为奇数时tmp=(tmp*x)%p,再将tmp的值返回函数Power。

…… …… 余下全文