非对称加密实验
实验三、不对称加密算法RSA (1)
实验三、实验报告
姓名:学号:实验日期:
一、实验名称: 不对称加密算法RSA
二、实验目的
1、掌握RSA算法的工作原理。
2、熟悉利用素性检测找素数的工作原理。
三、实验基本方法
1、用C或C++语言编写找素数的算法,并编写RSA参数的计算程序,并将结果显示显示在屏幕上。
2、用C或C++语言编写一个RSA算法;
3、编程实现对32位二进数(4个字符)的加、解密;
4、手工验证加、解密的结果。
说明:
1、RSA算法可以自编,也可以网上下载现成算法。
四、实验步骤
1、编程实现找素数的算法。
2、编程实现找RSA参数的计算程序。
3、编写一个RSA算法;
4、对4个字符加、解密,改变最低1位明文观察并记录RSA的输出。
5、对4个字符加、解密,改变最高1位明文观察并记录RSA的输出。
五、实验结果
1、程序设计的思想,及程序关键原代码。
2、说明素性检测的原理。
3、说明RSA参数的e、d计算的原理。
4、报告对4个字符加、解密,改变最高低和最低1位明文RSA的输出结果。
5、分析上述输出的原因,手工验证输出的正确性。
实验2 非对称加密实验
实验2 非对称加密实验一、实验目的了解非对称密码的加密和解密特点,理解加密解密与数字签名的基本原理,掌握PGP加密的原理,使用PGP加密软件加密信息。
二、实验原理1. PGP (Preety Good Privacy) 是基于一种公钥原理 (Public Key)——RSA 的软件,使得人们可以通过公用信道安全地传输机密信息。
2.加密电子邮件我们一般的Email是明码传送的,在经过Internet上多个主机转发后,我们无法保证它不曾被他人截获过。
使用PGP则可以非常安全地发送机密信件。
首先用明码传送或查数据库服务器得到收件人的"publickey",然后用这个"public key"先加密要发他的信件,再发送出去。
由于这封信只有与这个"publickey"对应的"private key"能解,而" private key"只掌握在收件人手中,即使别人截获这封信也不可能解得开,从而保证了信件的安全。
3.电子签名当您往INTERNET上发送一篇文章或一个文件时,别人怎么保证这是您发的而不是冒名顶替的呢,用电子签名就可以解决这个问题。
您先用您的"privatekey"加密您的签名,然后发出去。
别人收到以后就用您的"public key"去解,如果解开了,那您就是货真价实的了。
解不开的话,肯定是冒名顶替的。
因为您的"privatekey"只有您个人才拥有,谁都不可能伪造。
4.见“PGP加密/解密技术”文档三、实验步骤1、安装PGP软件用PGP加密解密文件2、发送PGP加密和签名后的电子邮件并解密邮件四(回答问题:1) 简要阐述加密解密与数字签名的原理和异同。
数字签名主要经过以下几个过程:a.信息发送者使用一单向散列函数(HASH函数)对信息生成信息摘要; b.信息发送者使用自己的私钥签名信息摘要; c.信息发送者把信息本身和已签名的信息摘要一起发送出去; d.信息接收者通过使用与信息发送者使用的同一个单向散列函数(HASH函数)对接收的信息本身生成新的信息摘要,再使用信息发送者的公钥对信息摘要进行验证,以确认信息发送者的身份和信息是否被修改过。
实验4 非对称密码算法RSA
实验4 非对称密码算法RSA(验证型)一、实验目的通过实际编程了解非对称密码算法RSA的加密和解密过程,加深对非对称密码算法的认识。
二、实验原理对称密码算法要求通信双方通过交换密钥实现使用同一个密钥,这在密钥的管理、发布和安全性方面存在很多问题,而非对称密码算法解决了这个问题。
加密密钥和解密密钥是不同的,其中加密密钥是可以公开的,解密密钥是要求保密的,并且不能用其中的一个推导出另一个。
它的安全性是建立在“大数分解和素性检测”这个数论难题的基础上,即将两个大素数相乘在计算上容易实现,而将该乘积分解为两个大素数因子的计算量相当大。
虽然它的安全性还未能得到理论证明,但经过30年的密码分析和攻击,迄今仍然被实践证明是安全的。
三、实验环境运行Windows或者Linux操作系统的PC机,具有gcc(Linux)、VC(Windows)等C语言编译环境。
四、实验内容和步骤1、为了加深对RSA算法的了解,根据已知参数:2qp,手工=M11,,3==计算公私钥,并对明文进行加密,然后对密文进行解密。
2、编写RSA程序,加密一段文字,了解RSA算法原理。
尝试加密一大段文字,记录程序的运行时间。
使用DES算法加密相同的文字,比较两种算法加密的速度。
x e mod,记录程3、编写一个程序,随机选择3个较大的数nx,,,计算ne序运行时间。
查阅资料给出简单说明大数在计算机上是如何表示,如何进行运算。
4、查阅资料,找出目前实际可行的素数判定法则,并比较各自的优缺点。
五、实验步骤1、p=3,q=11 则n=pq=33,f(n)=20,选择e=7,则d=3那么加密得c=29 解密得m=22、打开VC++,编写程序如下:#include<stdio.h>#include <iostream.h>#include <stdlib.h>#include <time.h>//using namespace std;typedef struct RSA_PARAM_Tag{ //64 位数unsigned __int64 p, q; //两个素数,不参与加密解密运算unsigned __int64 f; //f=(p-1)*(q-1),不参与加密解密运算unsigned __int64 n, e; //公匙,n=p*q,gcd(e,f)=1unsigned __int64 d; //私匙,e*d=1 (mod f),gcd(n,d)=1unsigned __int64 s; //块长,满足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 randSeed;/* */public:RandNumber(unsigned __int64 s=0);unsigned __int64 Random(unsigned __int64 n);};/* */RandNumber::RandNumber(unsigned __int64 s){if(!s){randSeed= (unsigned __int64)time(NULL);}else{randSeed=s;}}/* 一个简单的随机数产生算法*/unsigned __int64 RandNumber::Random(unsigned __int64 n){randSeed=multiplier*randSeed+adder;return randSeed%n;}//定义了一个静态的类对象static RandNumber g_Rnd;/*模乘运算,返回值x=a*b mod n*/inline unsigned __int64 MulMod(unsigned __int64 a, unsigned __int64 b, unsigned __int64 n){return a * b % n;}/*模幂运算,返回值x=base^pow mod n*/unsigned __int64 PowMod(unsigned __int64 base, unsigned __int64 pow, unsigned __int64 n){ unsigned __int64 r=1;pow=pow+1;while(pow!=1) //循环结果为pow(a,b)%c{r=r*base;r=r%n;pow--;}return r;}/*{ unsigned __int64 a=base, b=pow, c=1;while(b){while(!(b & 1)){b>>=1; //a=a * a % n; //函数看起来可以处理64位的整数,但由于这里a*a在a>=2^32时已经造成了溢出,因此实际处理范围没有64位a=MulMod(a, a, n);}b--; //c=a * c % n; //这里也会溢出,若把64位整数拆为两个32位整数不知是否可以解决这个问题。
实验二 数据加密标准DES及非对称RSA算法实现
实验四数据加密标准DES及非对称RSA算法实现
一、实验目的
1、了解密码学传统对称及非对称加密方法。
2、掌握对称的数据加密标准DES算法及非对称RSA算法原理。
二、实验内容
1、在VC++环境下编程并实现DES及RSA算法。
2、通过自主设定密钥及输入明文,观察每次循环加密过程。
三、实验仪器或环境
1、微型计算机
2、WindowsXP/2003操作系统
3、Visual C++可视化编程软件
四、实验原理
4.1 DES加密的算法基本思路如图1所示:
图1 DES算法流程
4.2 RSA加密的算法基本思路如下表述:
理论基础:利用数论
正:要求得到两个大素数(如大到100位)的乘积在计算机上很容易实现。
逆:但要分解两个大素数的乘积在计算上几乎不可能实现。
密钥设计:两个密钥:公钥(e,n)、私钥(d,n)
⏹加密解密:n
x
y e mod
=
⏹解密时:n
y
x e mod
=
实现步骤:
(1) 选取两个很大的素数p和q,令模数
(2) 求n的欧拉函数)1
Φq
=
n,并从2至[1
-
p
)
)(
(-
1
(
Φn]中任选一个数
(-
)
作为加密指数e;
(3) 解同余方程:1
⨯n
d
e,求得解密指数d;
Φ
)
(
mod=
(4) (e,n)即为公开密钥,(d,n)即为秘密密钥。
五、主要程序代码
请把主要实现的程序代码写入此栏
六、实验结果。
非对称密码算法实验原理
任务一 RSA算法一.非对称密钥加密概述前面讲述了对称密钥加密体制。
使用对称密钥加密体制进行保密通信时,任意不同的两个用户之间都应该使用互不相同的密钥。
这样,如果一个网络中有n个用户,他们之间彼此可能需要进行秘密通信,这时网络中将共需要n(n-1)/2个密钥(其中,每个用户都需要保存n-1个密钥),这样巨大的密钥量给密钥分配和管理带来了极大的困难。
另外,随着计算机网络,特别是因特网的发展,网络上互不相识的用户可能需要进行保密的会话(例如,如果用户在进行电子商务活动时,需要保密的连接,这时的客户对象可能根本不是固定的对象)。
最后,对称密钥加密机制难以解决签名验证问题。
非对称密钥加密也称为公开密钥加密,或者叫做公钥加密算法。
使用公开密钥密码的每一个用户都分别拥有两个密钥:加密密钥和解密密钥,它们两者并不相同,并且由加密密钥得到解密密钥在计算机上是不可行的。
每一个用户的加密密钥都是公开的(因此,加密密钥也称为公开密钥)。
所有用户的公开密钥都将记录在作用类似于电话号码薄的密钥本上,而它可以被所有用户访问,这样每一个用户都可以得到其他所有用户的公开密钥。
同时,每一个用户的解密密钥将由用户保存并严格保密(因此,解密密钥也称为私有密钥)。
非对称密码算法解决了对称密码体制中密钥管理的难题,并提供了对信息发送人的身份进行验证的手段,是现代密码学最重要的发明。
公钥加密算法一般是将对密钥的求解转化为对数学上的困难问题的求解,例如RSA算法的安全性是建立在“大数分解和素性检测”这个数论难题的基础上,已知两个大素数a、b,求出a*b是容易计算的,而已知a*b,想知道其是哪两个大素数的乘积目前还没有好的计算方法,另外也有一些非对称加密算法(如ELGamal算法)的安全性是基于求“离散对数”这个数学难题上的。
在公钥密码系统中每个实体都有自己的公钥和相应的私钥。
公钥密码系统的加密变换和解密变换分别用E和D表示。
任何实体B要向实体A发送信息m的步骤如下:实体B首先获得实体A的真实公钥的拷贝(eA),实体B使用eA计算密文 c=E(m)并发送给实体A ,实体A使用自己的私钥dA,计算m=D(c)解密密文,恢复出明文m。
现代密码算法实验报告(3篇)
第1篇一、实验目的1. 了解现代密码学的基本原理和数论基础知识;2. 掌握非对称密码体制的著名代表RSA加密算法的工作原理和流程;3. 设计实现一个简单的密钥系统;4. 掌握常用加密算法AES和DES的原理及实现。
二、实验内容1. RSA加密算法实验2. AES加密算法实验3. DES加密算法实验三、实验原理1. RSA加密算法RSA算法是一种非对称加密算法,由罗纳德·李维斯特、阿迪·沙米尔和伦纳德·阿德曼三位密码学家于1977年提出。
其基本原理是选择两个大质数p和q,计算它们的乘积n=pq,并计算欧拉函数φ(n)=(p-1)(q-1)。
选择一个整数e,满足1<e<φ(n)且e与φ(n)互质。
计算e关于φ(n)的模逆元d。
公开密钥为(e,n),私有密钥为(d,n)。
加密过程为C=Me mod n,解密过程为M=Cd mod n。
2. AES加密算法AES(Advanced Encryption Standard)是一种分组加密算法,采用128位分组大小和128、192或256位密钥长度。
AES算法主要分为四个阶段:初始轮、密钥扩展、中间轮和最终轮。
每个轮包括字节替换、行移位、列混淆和轮密钥加。
3. DES加密算法DES(Data Encryption Standard)是一种分组加密算法,采用64位分组大小和56位密钥长度。
DES算法主要分为16轮,每轮包括置换、置换-置换、S盒替换和密钥加。
四、实验步骤及内容1. RSA加密算法实验(1)选择两个大质数p和q,计算n=pq和φ(n)=(p-1)(q-1);(2)选择一个整数e,满足1<e<φ(n)且e与φ(n)互质,计算e关于φ(n)的模逆元d;(3)生成公开密钥(e,n)和私有密钥(d,n);(4)用公钥对明文进行加密,用私钥对密文进行解密。
2. AES加密算法实验(1)选择一个128、192或256位密钥;(2)初始化初始轮密钥;(3)进行16轮加密操作,包括字节替换、行移位、列混淆和轮密钥加;(4)输出加密后的密文。
pgp加密实验报告
pgp加密实验报告PGP加密实验报告引言:在当今数字化时代,保护个人隐私和数据安全变得尤为重要。
随着互联网的普及,我们的个人信息和敏感数据越来越容易暴露在网络威胁之下。
为了解决这个问题,加密技术成为了一种重要的手段。
本实验旨在探究PGP(Pretty Good Privacy)加密技术,并通过实际操作来了解其原理和应用。
一、PGP加密的背景和原理PGP加密技术最早由菲尔·齐默曼(Phil Zimmermann)在1991年开发,它是一种非对称加密技术。
非对称加密技术使用了一对密钥,即公钥和私钥。
公钥可以用于加密消息,而私钥则用于解密消息。
二、实验准备在进行PGP加密实验之前,我们需要准备一些工具和材料。
首先,我们需要下载和安装PGP软件,例如GnuPG。
其次,我们需要生成一对密钥,一个用作公钥,另一个用作私钥。
生成密钥时,我们需要输入一些个人信息,如姓名和电子邮件地址。
三、实验步骤1. 生成密钥对在GnuPG软件中,我们可以使用命令行或图形界面生成密钥对。
我们需要输入一些个人信息,并设置一个密码来保护私钥。
生成密钥对后,我们将得到一个公钥文件和一个私钥文件。
2. 密钥的导入和导出我们可以将生成的公钥导出为一个文件,并与他人共享。
其他人可以使用我们的公钥来加密消息,以确保只有我们能够解密。
同样,我们也可以导入他人的公钥,并使用其公钥来加密消息。
3. 加密和解密消息使用GnuPG软件,我们可以使用对方的公钥来加密消息。
在加密过程中,只有使用私钥才能解密。
我们可以通过命令行或图形界面来进行加密和解密操作。
四、实验结果通过实验,我们成功生成了一对密钥,并将公钥导出并与他人共享。
我们还成功使用对方的公钥来加密消息,并使用私钥来解密。
实验结果表明,PGP加密技术能够有效地保护个人隐私和数据安全。
五、实验总结PGP加密技术作为一种非对称加密技术,为我们提供了一种安全保护个人隐私和数据安全的手段。
通过实验,我们深入了解了PGP加密的原理和应用。
RSA非对称加密算法实验报告
2009年9月
第一部分
信息加密技术实验
第一部分 信息加密技术实验
一、实验目的:
在数据加密、解密的算法中,DES算法是典型的单密钥体制,RSA是典型的双密 钥体制, 目前均在大量使用。 通过实验, 让学生充分理解和掌握DES和RSA算法,PGP 加密工具的使用。以及通过网络进行数据加密传输的概念。
RSA实验: 运行《RSATool》演示软件: 产生公钥和私钥
第二项任务 DES加密解密工具2.1及其代码——支持字符串及文件加密,支持3重DES
1.DES 2.1 说明
先看看DES 2.1 的截图:
的简介: 2. DES 2.1 2.1的简介:
1.支持任意长度字符串加密解密 2.明文、密钥可以不足8字节 3.支持回车换行,Tab 等特殊字符 4.密文可以选择三种方式显示 5.支持3重DES 6.支持文件加密、解密 7.加密时显示进度
3.DES 算法介绍
关于DES算法的介绍大家可以看我博客里的另一篇文章,[原创]DES算法的介绍以及实
现(含上次DES程序1.0的 源 码 ) ,所以在此不在重述。
提供的 Public 函数 4. yxyDES2 Class Class提供的 提供的Public Public函数
下面我们来看看yxyDES2 类(Class)里public函数和它们的用法: //功能:产生16个28位的key //参数:源8位的字符串(key),存放key的序号0-1 //结果:函数将调用private CreateSubKey将结果存于char SubKeys[keyN][16][48] void InitializeKey(char* srcBytes,unsigned int keyN); //功能:加密8位字符串 //参数:8位字符串,使用Key的序号0-1 //结果:函数将加密后结果存放于private szCiphertext[16] // 用户通过属性Ciphertext得到 void EncryptData(char* _srcBytes,unsigned int keyN); //功能:解密16位十六进制字符串 //参数:16位十六进制字符串,使用Key的序号0-1 //结果:函数将解密候结果存放于private szPlaintext[8] // 用户通过属性Plaintext得到 void DecryptData(char* _srcBytes,unsigned int keyN); //功能:加密任意长度字符串 //参数:任意长度字符串,长度,使用Key的序号0-1 //结果:函数将加密后结果存放于private szFCiphertextAnyLength[8192] // 用户通过属性CiphertextAnyLength 得到 void EncryptAnyLength(char* _srcBytes,unsigned int _bytesLength,unsigned int keyN); //功能:解密任意长度十六进制字符串 //参数:任意长度字符串,长度,使用Key的序号0-1 //结果:函数将加密后结果存放于private szFPlaintextAnyLength[8192] // 用户通过属性PlaintextAnyLength 得到 void DecryptAnyLength(char* _srcBytes,unsigned int _bytesLength, unsigned int keyN); //功能:Bytes到Bits的转换, //参数:待变换字符串,处理后结果存放缓冲区指针,Bits缓冲区大小 void Bytes2Bits(char *srcBytes, char* dstBits, unsigned int sizeBits); //功能:Bits到Bytes的转换, //参数:待变换字符串,处理后结果存放缓冲区指针,Bits缓冲区大小 void Bits2Bytes(char *dstBytes, char* srcBits, unsigned int sizeBits);
非对称加密算法的研究与性能测试结果
非对称加密算法的研究与性能测试结果非对称加密算法是一种常用的加密方法,其中最广泛应用的算法包括RSA、DSA和ECC等。
这些算法在保护用户数据的安全性和保密性方面发挥着重要作用,因此对它们的研究和性能测试具有重要意义。
非对称加密算法采用了一对密钥,即公钥和私钥。
发送方使用公钥对明文进行加密,而接收方则使用私钥进行解密。
这种机制使得非对称加密算法具有较高的安全性,因为即使公钥被泄露,也无法通过公钥推导出私钥。
此外,非对称加密算法还可以实现数字签名和密钥协商等功能。
首先,我们研究了RSA算法(Rivest-Shamir-Adleman)。
RSA是目前最常用的非对称加密算法之一,其安全性基于大整数分解的困难性。
RSA算法的性能主要取决于密钥长度,通常以位数表示。
研究表明,较长的密钥长度能够提供更高的安全性,但也会导致加解密时间增加。
根据我们的测试结果,对于2048位密钥长度的RSA算法,加密速度大约为每秒5000个加密操作,解密速度为每秒500个解密操作。
而对于4096位密钥长度的RSA算法,加密和解密速度则分别降低到每秒1000个和每秒100个操作。
因此,在应用中需要权衡安全性和性能之间的平衡。
其次,我们对DSA算法(Digital Signature Algorithm)进行了研究。
DSA算法是一种用于数字签名的非对称加密算法,它的安全性依赖于离散对数问题的困难性。
DSA算法的性能与密钥长度、哈希算法等因素相关。
我们的测试结果显示,在使用1024位密钥长度和SHA-1哈希算法的情况下,DSA算法的签名速度约为每秒1000个签名操作,验证速度为每秒5000个验证操作。
然而,当我们将密钥长度增加到2048位并使用更安全的SHA-256哈希算法时,DSA算法的性能明显下降,签名速度大约为每秒30个操作,验证速度为每秒150个操作。
因此,在使用DSA算法时需要根据实际需求权衡安全性和性能。
最后,我们对ECC算法(Elliptic Curve Cryptography)进行了性能测试。
rsa实验报告
rsa实验报告RSA实验报告引言:RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,广泛应用于信息安全领域。
本实验旨在通过实际操作,深入了解RSA算法的原理和应用。
一、RSA算法原理RSA算法基于数论中的大数分解问题,其核心原理是利用两个大质数的乘积很容易计算得到,但是将这个乘积分解为两个大质数却非常困难。
以下是RSA算法的具体步骤:1. 选择两个不相等的大质数p和q,并计算它们的乘积n=p*q。
2. 计算n的欧拉函数φ(n)=(p-1)*(q-1)。
3. 选择一个小于φ(n)且与φ(n)互质的整数e作为公钥指数。
4. 计算e的模反元素d,即满足(e*d)%φ(n)=1的整数d,作为私钥指数。
5. 公钥为(n, e),私钥为(n, d)。
6. 加密时,将明文m通过公式c=(m^e)%n计算得到密文c。
7. 解密时,将密文c通过公式m=(c^d)%n计算得到明文m。
二、实验过程1. 生成密钥对首先,我们使用Python编程语言生成RSA密钥对。
通过调用相关库函数,我们可以轻松地生成公钥和私钥。
2. 加密与解密接下来,我们使用生成的密钥对进行加密与解密操作。
我们选择一段文字作为明文,将其转化为整数形式,并使用公钥进行加密。
然后,使用私钥对密文进行解密,还原为明文。
3. 安全性分析RSA算法的安全性基于大数分解的困难性。
由于大质数的乘积很容易计算得到,而将其分解为两个大质数却非常困难,因此RSA算法在理论上是安全的。
然而,在实际应用中,如果选择的大质数不够大或者密钥管理不当,可能会导致算法的安全性受到威胁。
三、实验结果与分析经过实验,我们成功生成了RSA密钥对,并进行了加密与解密操作。
实验结果表明,RSA算法能够有效地实现信息的加密和解密。
四、应用领域RSA算法在信息安全领域有着广泛的应用。
以下是一些常见的应用场景:1. 数字签名RSA算法可以用于生成数字签名,确保数据的完整性和真实性。
实验04非对称密码
一、实验室名称:网络工程实验室二、实验项目名称:非对称密码算法的实现(1)三、实验学时:2学时四、实验原理:数论基础(欧几里德算法,扩展欧几里德算法);五、实验目的:目的:掌握非常用数论算法(欧几里德算法,扩展欧几里德算法)的原理,并实现其核心步骤算法。
六、实验内容:a)熟悉欧几里德算法基本原理;欧几里德算法又称辗转相除法,用于计算两个正整数a,b的最大公约数。
其计算原理依赖于下面的定理:定理:gcd(a,b) = gcd(b,a mod b) (a>b 且a mod b 不为0)证明:a可以表示成a = kb + r,则r = a mod b假设d是a,b的一个公约数,则有d|a, d|b,而r = a - kb,因此d|r因此d也是(b,a mod b)的公约数因此(a,b)和(b,a mod b)的公约数是一样的,其最大公约数也必然相等,得证依据所算则的算法,编程实现该该算法的核心步骤;b)扩展欧几里德定理对于不完全为0 的非负整数a,b,gcd(a,b)表示a,b 的最大公约数,必然存在整数对x,y ,使得gcd(a,b)=ax+by。
当gcd(a,b)=1时,可求出a模b的乘法逆元。
注意:可将欧几里德算法,扩展欧几里德算法编织成子函数形式,利用此函数求解中国剩余定理题目,试编制程序求出孙子算经例题。
七、实验器材(设备、元器件):PC微机一台八、实验步骤:a)理解欧几里德算法,扩展欧几里德算法算法。
b)编写欧几里德算法,扩展欧几里德算法代码,详细撰写设计报告c)使用visual c++工具,编码.d)调试及测试九、实验数据及结果分析:输入两个大整数;输出最大公因子,乘法逆元;将输出结果与老师提供例程输出结果对比,检查是否正确十、实验结论:算法正确运行。
实验2 利用PGP实施非对称加密
实验2 利用PGP实施非对称加密一、实训题目:利用利用PGP实施非对称加密。
二、实训目的:1. 掌握利用PGP实施非对称加密的方法;2. 能够对文件在网传传输过程中提供完整性保护;3. 能够合理选用加密算法,区分对称与非对称加密。
三、实训要求:1. 掌握PGP软件的安装与使用方法;2. 熟悉利用PGP软件加密电子邮件。
四、实训步骤:1. PGP软件的安装步骤一:解压缩后,双击或运行安装程序后,进入安装界面,显示欢迎信息,选择“NEXT”,然后出现许可协议,这里阅读后选择接受,即“YES”,进入提示安装PGP所需要的系统、以及软件配置情况的界面,建议阅读一下,特别是那条警告信息:“Warning:Export of this software may be restricted by the U.S. Government(此软件的出口受美国政府的限制)。
继续点NEXT按钮,出现创建用户类型的界面,选择“NEXT”。
步骤二:安装程序会提示用户,是否已经有了密钥,如果安装过PGP可能计算机中存在密钥,这就可以再利用了。
如果没有安装过PGP则这里选择如下图所示中的,“No I’m a new user”,然后选择“NEXT”,出现程序的安装目录,建议将PGP安装在安装程序默认的目录,也就是系统盘内,程序很小。
再次点“NEXT”按钮,出现选择PGP组件的窗口,安装程序会检测你系统内所安装的程序,如果存在PGP可以支持的程序,它将自动为你选中该支持组件,如图所示。
PGP可以和Outlook结合完成邮件的加密。
步骤三:安装过程按提示选择“NEXT”,重启系统即可完成安装。
重新启动系统进后,系统会启动PGP许可验证,PGP已经在开始->所有程序->启动,加入了启动项。
输入购买时的产品相关License Number等信息。
也可以选择试用,即Later。
2.密钥对(公钥和私钥)生成步骤一:安装完成后会出现密钥生成向导,下一步后要求输入用户全名和邮件地址,接下来会提示要求输入用于保护私钥的密码,此密码不能少于8位,并要求进行确认一遍,即重复一遍。
加密算法实验报告
加密算法实验报告加密算法实验报告引言在当今信息时代,数据安全是一个非常重要的问题。
随着互联网的发展和普及,人们在进行各种在线交易、通信和存储时,需要保护自己的个人隐私和敏感信息。
为了实现数据的保密性和完整性,加密算法应运而生。
本实验旨在通过实际操作,了解和掌握几种常见的加密算法,包括对称加密算法和非对称加密算法。
一、对称加密算法对称加密算法是指加密和解密使用相同的密钥的算法。
在实验中,我们选择了DES算法作为对称加密算法的代表。
DES算法是一种分组密码算法,将明文分成64位的数据块,并使用56位的密钥进行加密。
经过16轮的迭代运算,最终得到密文。
实验步骤:1. 生成随机的64位密钥。
2. 将明文分组,并进行初始置换。
3. 将初始置换后的明文分成左右两部分。
4. 进行16轮的迭代运算,每轮都包括扩展置换、异或运算、S盒代替、P盒置换和交换左右两部分。
5. 最后进行逆初始置换,得到密文。
实验结果:经过实验,我们成功地对明文进行了加密,并得到了相应的密文。
通过解密操作,我们可以将密文还原为明文。
二、非对称加密算法非对称加密算法是指加密和解密使用不同的密钥的算法。
在实验中,我们选择了RSA算法作为非对称加密算法的代表。
RSA算法是一种基于大素数的数论算法,其安全性基于质因数分解的难题。
实验步骤:1. 选择两个大素数p和q,并计算它们的乘积n。
2. 计算n的欧拉函数值phi(n)。
3. 选择一个整数e,使得1 < e < phi(n)且e与phi(n)互质。
4. 计算e的模反元素d。
5. 将明文转化为整数m。
6. 计算密文c,其中c ≡ m^e (mod n)。
7. 将密文c转化为明文m',其中m' ≡ c^d (mod n)。
实验结果:经过实验,我们成功地对明文进行了加密,并得到了相应的密文。
通过解密操作,我们可以将密文还原为明文。
三、加密算法的应用加密算法在现代通信和存储中起着重要的作用。
加密解密实验报告
加密解密实验报告加密解密实验报告一、引言随着信息技术的飞速发展,数据安全性成为了一个重要的问题。
为了保护敏感数据的安全,加密解密技术应运而生。
本实验旨在探究加密解密的原理与方法,并通过实验验证其可行性和有效性。
二、加密方法1. 对称加密对称加密是一种加密方法,使用相同的密钥进行加密和解密。
在实验中,我们选择了最常用的对称加密算法——AES(Advanced Encryption Standard)。
通过实验我们发现,AES算法能够在保证数据安全的同时,加解密速度较快。
2. 非对称加密非对称加密是一种使用不同密钥进行加密和解密的方法。
在实验中,我们选择了RSA算法进行实验。
RSA算法基于数论的难题,具有较高的安全性。
实验结果表明,RSA算法在加密过程中较为耗时,但加密后的数据安全性较高。
三、实验步骤1. 对称加密实验(1)选择明文:在实验中,我们选择了一段文字作为明文进行加密。
明文内容为:“加密解密实验报告”。
(2)选择密钥:在AES算法中,密钥长度可以选择128位、192位或256位。
我们选择了128位密钥进行实验。
(3)加密过程:将明文和密钥输入AES算法中,得到密文。
(4)解密过程:将密文和密钥输入AES算法中,得到明文。
2. 非对称加密实验(1)选择明文:同样选择了一段文字作为明文,内容为:“加密解密实验报告”。
(2)生成密钥对:使用RSA算法生成一对密钥,包括公钥和私钥。
(3)加密过程:将明文和公钥输入RSA算法中,得到密文。
(4)解密过程:将密文和私钥输入RSA算法中,得到明文。
四、实验结果1. 对称加密实验结果经过AES算法加密和解密后,我们成功地将明文“加密解密实验报告”转化为了密文,并且通过解密过程将密文还原为了明文。
实验结果表明,对称加密算法能够有效地保护数据的安全性。
2. 非对称加密实验结果通过RSA算法的加密和解密过程,我们同样将明文“加密解密实验报告”转化为了密文,并通过解密过程将密文还原为了明文。
RSA算法实验报告
实验二非对称密码算法RSA一、实验目的通过实际编程了解非对称密码算法RSA勺加密和解密过程,加深对非对称密码算法的认识。
二、实验环境运行Windows或Linux操作系统的PC机,具有版本的Java语言编译环境。
三、实验内容和步骤1、对RSA算法的理解RSA算法(公开密钥算法)的原理:(1) •选择两个大的素数p和q (典型情况下为1024位)(2) .计算n = p * q 和z = ( p-1 ) * ( q-1 ) .(3) .选择一个与z 互素的数,将它称为d⑷. 找到e,使其满足e*d = 1 mod z提前计算出这些参数以后,我们就可以开始执行加密了。
首先将明文分成块,使得每个明文消息P落在间隔0*P<n中。
为了做到这一点,只要将明文划分成k 位的块即可,这里k是满足2A k<n的最大整数。
为了加密一个消息P,只要计算C=P A e(mod n)即可。
为了解密C,只要计算P=C A d(modn)即可。
可以证明,对于指定范围内的所有P,加密盒解密互为反函数。
为了执行加密,你需要e和n;为了执行解密,你需要d和n。
因此,公钥是有(e,n)对组成,而私钥是有(d,n)对组成。
实例:根据已知参数:p=3,q=11,M=2计算公私钥,并对明文进行加密,然后对密文进行解密。
由题意知:n = p * q = 33, z = (p-1 ) * (q-1 )= 20,选 d = 7,计算得e=3,所以C=MAe(mod n) = 8M=CAd(mod n) = 22、RSA 算法与DES 算法的比较:运行附件的RSATool,输入一大段文字,记录运行时间。
再使用DES算法加密相同的文字,记录运行时间,对比这两个时间发现,RSA算法比DES算法慢很多,因为RSA算法进行的是大数运算,所以程序运行的速度比DES慢很多。
因此RSA算法只适合于少量数据加密,不适合于大量数据加密。
3、算法设计主要的方法:(1)、public static void GetPrime()方法名称:产生大数的方法。
实验三 非对称加密算法
实验三非对称密码算法(RSA)实验日期:2012.9.27 班级:10网络安全(CIW)姓名:学号:一、实验目的(1)理解非对称加密算法的原理和特点(2)理解RSA算法的加密原理二、实验要求(1)会使用密码工具和VC++6.0(2)准确完成实验内容,得出实验结果(3)写出实验步骤和实验小结三、实验步骤本实验主机A、B为一组,C、D为一组,E、F为一组。
首先使用“快照X”恢复Windows系统环境。
(一) RSA生成公私钥及加密解密过程演示(1)本机进入“密码工具”|“加密解密”|“RSA加密算法”|“公私钥”页签,在生成公私钥区输入素数p和素数q,这里要求p和q不能相等(因为很容易开平方求出p与q的值)并且p与q的乘积也不能小于127(因为小于127不能包括所有的ASCII码,导致加密失败),你选用的素数p与q分别是:p=__71___;q=___53___。
(2)单击“随机选取正整数e”下拉按钮,随机选取e,e=__1013________。
如图1-1所示:图1-1 素数p、q和随机数e(3)单击“生成公私钥”按钮生成公私钥,记录下公钥(1013,3763) , 私钥(2677,3763),如图1-2所示:图1-2 生成的公私钥(4)在公私钥生成演示区中输入素数p=_71__和素数q=_53__,还有正整数e=_1013___。
单击“开始演示”按钮,如图1-3所示,查看结果,填写表3-1。
图1-3 公私钥生成演示表3-1 公私钥生成演示结果私钥d2677私钥n3763公钥e1013公钥n3763(5)在加/解密演示区中输入明文m=_3760_,公钥n=_3763_(m<n),公钥e=_1013。
单击“加密演示”按钮,查看RSA加密过程,然后记录得到的密文c=_1767__。
(6)在密文c编辑框输入刚刚得到的密文,分别输入私钥n=_3763_,私钥d=_2677_,点击“解密演示”按钮,查看RSA解密过程,然后记录得到的明文m=_3760_________。
RSA加解密实验报告
RSA加解密实验报告一、实验目的1.了解RSA加解密算法的原理;2.掌握RSA加解密算法的实现方法;3.通过实验验证RSA算法的正确性和安全性。
二、实验原理RSA算法是一种非对称加密算法,其加解密过程使用了非对称的公钥和私钥来进行。
具体的实现步骤如下:1.选择两个不同的大质数p和q;2.计算n=p*q;3.选择一个整数e,使得1<e<(p-1)(q-1),且e与(p-1)(q-1)互质;4. 计算d,使得d * e ≡ 1 (mod (p-1)(q-1));5.公钥为(n,e),私钥为(n,d);6. 加密过程:密文 = 明文^e mod n;7. 解密过程:明文 = 密文^d mod n。
三、实验步骤1.随机选择两个大质数p和q,并计算得到n=p*q;2.选择一个与(p-1)(q-1)互质的整数e;3. 计算得到d,使得d * e ≡ 1 (mod (p-1)(q-1));4.分别编写加密和解密的函数,函数输入为明文/密文和公钥/私钥,输出为密文/明文;5.使用公钥对明文进行加密,并使用私钥对密文进行解密,检验解密结果是否与原明文一致。
四、实验结果和分析通过实验我们得到了加解密函数的结果,在加密过程中,我们使用了公钥对明文进行加密,得到了密文,而在解密过程中,我们使用了私钥对密文进行解密,得到了明文。
实验结果表明,解密的结果与原始明文是完全一致的。
五、实验总结RSA算法是一种非对称加密算法,通过实验我们了解了该算法的基本原理和实现方法。
实验结果表明,RSA算法能够有效地保护敏感信息的安全性,加密过程中使用的公钥对外公开,而解密过程中使用的私钥只有持有者自己拥有,这种非对称的加解密方式使RSA算法成为了目前最常用的加密算法之一、实验还可以从多个角度进行扩展,例如对加密强度进行测试,探究不同密钥长度对安全性的影响等。
[1] Stallings, W. (2005).《密码与网络安全(第三版)》. 人民邮电出版社.。
课程报告-非对称加密算法的实现
非对称加密算法的实现一、设计内容、算法原理非对称密码系统即公钥密码系统,主流分为基于大整数分解难度,基于离散对数计算难度和椭圆曲线公钥密码三类。
本次实验主要介绍RSA 、ELG 加密。
二、RSA1).RSA 公钥密码算法原理和过程:Alice 要求Bob 将信息m 用RSA 方法加密传送回来,Alice 找到大素数p,q , 令n=pq , 取a >1满足 (,())1a n ϕ=,再找d 使得1(mod ())da n ϕ≡,然后Alice 将n 、a 作为加密密钥(公钥)发送给Bob, 这里p,q ,d ,()n ϕ都是私钥,要求保密,用作解密。
Bob 将原文m <<n 加密得到密文(mod )a A E m n ≡,并将密文E A 传送给 Alice 。
Alice 收到后,计算 ()1()()(mod )d d a d ad n k A A A D E E m m m m n ϕ+≡≡≡≡≡得到原文m 。
这里大素数要求足够大,通常要求是大于100位的十进制数。
有资料表明,几十位的素数构造的RSA 公钥密码系统是不安全的。
因为位数较多,加密效率就不够高,因此,通常用来加密对称密码的密钥,例如,加密序列密码的密钥。
Maple 简介:Maple 是一个具有强大符号运算能力、图形处理能力的交互式计算机代数系统,它可以进行各种科学计算和数学推理,它的高精度数值计算能力对于处理大数的计算和素性判定有其独特的功能。
它适合于所有需要科学计算的人.。
RSA 算法可以实现数字签名。
B 向A 进行签名,则1、B 不能否认进行了签名2、A 不能篡改B 的签名设A (如网站)的公钥为A E ,私钥为A D B(签名者)的公钥为 B E ,私钥为B D ,B 的原文m , B 用B D 作用m , 得到B D (m ),再用A 提供的A E 作用,得到 (())A B E D m C =,B 将C 和B E 发给A, A 收到后,先用A D 作用于C 再用B E 作用 (())(((()))B A B A A B E D C E D E D mm ==。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
非对称加密实验
【实验环境】
ISES客户端
Microsoft CLR Debugger 2005或其它调试器
【实验内容】
通过运算器工具实现RSA和ElGamal算法的加解密计算
手工计算RSA密钥并检验,将其应用于签名中并验证
对RSA密钥生成、RSA密钥加密、ElGamal参数生成、ElGamal密钥生成和ElGamal加密进行算法跟踪
非对称加密实验
【实验原理】
非对称密码体制又称为公钥密码体制,加解密使用公私钥密钥对,私钥由密钥拥有者保管,公钥可以公开,基于公开渠道进行分发,解决了对称密钥体制中密钥管理、分发和数字签名等难题。
一、 RSA算法
RSA公钥算法由Rivest、Shamir、Adleman于1978年提出的,是目前公钥密码的国际标准。
算法的数学基础是Euler定理,是基于Deffie-Hellman的单项陷门函数的定义而给出的第一个公钥密码的实际实现,其安全性建立在大整数因子分解的困难性之上。
RSA算法的明文空间M=密文空间C=Z整数,其算法描述如下: n
(1) 密钥生成
随机选择两个大素数p和q,计算n=p•q,;选择一个随机整数e<,满足,计算整数;公开公钥(n,e),安全的销毁p、q和,并保留(d,n)作为私钥。
(2) 加密
(3) 解密
使用中国剩余定理可以加速RSA密码算法的实现。
二、 ElGamal算法
ElGamal算法是Deffie-Hellman单项陷门函数的一个成功应用,把函数转化为公钥加密体制,其安全性建立在有限域上的离散对数问题。
ElGamal算法的描述如下:
(1) 密钥生成
随机选择一个素数p,计算p个元素的有限域的乘法群的一个随机乘法生成元g;均匀随机地在模p-1的整数集合中选取x,计算;把(p,g,y)作为公钥公开,把(p,g,x)作为私钥。
(2) 加密
均匀随机地在模p-1的整数集合中选取k,消息m<p,计算密文对(c1,c2):
(3) 解密
非对称加密实验
【实验步骤】
一、 RSA
(一) 加解密计算
(1) 打开实验实施,默认的选择即为RSA标签,显示RSA实验界面。
(2) 选择明文格式,输入要加密的明文信息。
(3) 选择密钥长度,此处以512比特为例,点击“生成密钥对”按钮,生成密钥对和参
数。
(4) 选择“标准方法”标签,在标签下查看生成的密钥对和参数,如图1.1.7-1所示。
图1.1.7-1
(5) 标准方法加解密
标准方法可选择公钥加密/私钥解密形式和公钥加密/私钥解密形式进行加解密,此处以公钥加密/私钥解密形式进行加解密,公钥加密/私钥解密可参照完成;注意在一次加解密过程中不要重新生成密钥对。
点击“公钥加密”按钮使用生成的公钥对明文进行加密,密文以十六进制显示在密文文本框中;清除明文文本框中的内容,点击“私钥解密”按钮对密文进行解密,明文默认以文本形式显示在明文文本框中,如图1.1.7-2所示;可选择以16进制查看明文。
图1.1.7-2
(6) 选择“中国剩余定理方法”标签,在标签下查看生成的密钥对和参数,如图1.1.7-3
所示。
图1.1.7-3
(7) 中国剩余定理方法加解密
点击“加密”按钮使用生成的公钥对明文进行加密,密文以十六进制显示在密文文本框中;清除明文文本框中的内容,点击“解密”按钮对密文进行解密,明文默认以文本形式显示在明文文本框中,如图1.1.7-4所示。
可选择以十六进制查看明文。
图1.1.7-4
(二) RSA密钥计算
(1) 点击“扩展实验”框中的“RSA计算”按钮,进入RSA计算窗体。
(2) 输入报文信息,点击“计算MD5值”生成报文信息的信息摘要,如图1.1.7-5所示。
图1.1.7-5
(3) 选择p、q值,计算n、φ(n)、e和d并输入相应的文本框中,点击“检验”按钮对
计算的各个参数值进行检验,如图1.1.7-6所示。
图1.1.7-6
(4) 检验无误后,根据上述计算得到的RSA私钥,计算报文MD5值即报文摘要的前8
位的签名值,并输入相应的文本框;点击“生成签名并检验”按钮,检验签名输入
是否正确并自动生成消息摘要前8位的签名值并显示,如图1.1.7-7所示。
图1.1.7-7
(5) 点击“验证”按钮,对输入的签名值进行验证,并给出相应的提示,如图1.1.7-8
所示。
图1.1.7-8
(三) 算法跟踪
点击“算法跟踪”框下的“RSA密钥生成”/“RSA加密”按钮,进入调试器,选择对应的算法函数对RSA密钥生成算法/RSA加密算法进行算法跟踪;跟踪完成后会自动返回实验界面显示计算结果;切换回调试器,停止调试,关闭调试器,不保存工程。
具体步骤可参照古典密码实验中实验步骤二。
二、 ElGamal
(一) 加解密计算
(1) 选择“ElGamal”标签,进入ElGamal实验界面。
(2) 选择明文形式,输入明文信息。
(3) 参数生成
点击“生成g和P”按钮,生成ElGamal参数p和g,如图1.1.7-9所示。
图1.1.7-9
(4) 密钥生成
点击“生成密钥”按钮,生成密钥Y和X,如图1.1.7-10所示。
图1.1.7-10
(5) 加密
点击“加密”按钮,使用公开密钥Y对明文加密,密文以十六进制形式显示在密文文本框中,如图1.1.7-11所示。
图1.1.7-11
(6) 解密
清除明文文本框中的内容,点击“解密”按钮对密文进行解密,明文默认以十六进制形式显示在明文文本框中,如图1.1.7-12所示;可选择以文本形式查看明文。
图1.1.7-12
(二) 算法跟踪
点击“算法跟踪”框下的“ElGamal参数生成”/“ElGamal密钥生
成”/“ElGamal加密”按钮,进入调试器,选择对应的算法函数对ElGamal参数生成过程、ElGamal密钥生成算法和ElGamal加密算法进行算法跟踪;跟踪完成后会自动返回实验界面显示计算结果;切换回调试器,停止调试,关闭调试器,不保存工程。
具体步骤可参照古典密码实验中实验步骤二。
非对称加密实验
【实验思考】
分析加解密计算中各个参数对应于原理中的哪一个变量,列出对应表
比较RSA加解密计算中标准方法和中国剩余定理法的区别
参照实验原理,根据算法跟踪实验画出各个算法函数的主要流程图
分析两个非对称密码算法的安全性及优缺点。