实验2-非对称加密实验报告
实验2-非对称加密实验报告

云南大学软件学院实验报告课程:信息安全学实验学期:2012-2013学年第二学期任课教师:金鑫专业:学号:姓名:成绩:实验2-非对称加密实验一、实验目的了解非对称密码的加密和解密特点,理解加密解密与数字签名的基本原理,掌握PGP加密的原理,使用PGP加密软件加密信息。
二、实验原理公钥和私钥是互补的,就是说用公匙加密的密文可以用私匙解密,反过来也一样。
假设甲要寄信给乙,他们互相知道对方的公匙。
甲就用乙的公匙加密邮件寄出,乙收到后就可以用自己的私匙解密出甲的原文。
由于没别人知道乙的私匙所以即使是甲本人也无法解密那封信,这就解决了信件保密的问题。
另一方面由于每个人都知道乙的公匙,他们都可以给乙发信,那么乙就无法确信是不是甲的来信。
认证的问题就出现了,这时候数字签名就有用了。
甲用自己的私匙加密,附加在邮件上,再用乙的公匙将整个邮件加密。
这样这份密文被乙收到以后,乙用自己的私匙将邮件解密,得到甲的原文和签名,乙的PGP也从原文计算出一个结果与甲的公匙解密签名得到的数比较,如果符合就说明这份邮件确实是甲寄来的。
三、实验步骤1、安装PGP软件,用PGP加密、解密文件密钥加密口令加密解密口令解密2、发送PGP加密和签名后的电子邮件并解密邮件将要发送的文件添加到PGP压缩包对文件进行加密输入邮件地址签名保存生成加密后的PGP文件将加密后的PGP文件发送给搭档对方收到邮件收到的PGP文件解密后得到原文件解密后的文件可以打开并还原,如果密钥不配对打开将是乱码。
四、回答问题1)简要阐述加密解密与数字签名的原理和异同数字签名和数字加密的过程虽然都使用公开密钥体系,但实现的过程正好相反,使用的密钥对也不同。
数字签名使用的是发送方的密钥对,发送方用自己的私有密钥进行加密,接收方用发送方的公开密钥进行解密,这是一个一对多的关系,任何拥有发送方公开密钥的人都可以验证数字签名的正确性。
数字加密则使用的是接收方的密钥对,这是多对一的关系,任何知道接收方公开密钥的人都可以向接收方发送加密信息,只有唯一拥有接收方私有密钥的人才能对信息解密。
实验二 数据加密标准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。
数据加密应用实验报告

一、实验目的1. 理解数据加密的基本原理和方法。
2. 掌握常用的数据加密算法及其应用。
3. 熟悉数据加密在实际应用中的操作流程。
4. 提高信息安全意识和技能。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 加密工具:PyCrypto库4. 实验数据:随机生成的文本文件三、实验内容1. 数据加密原理介绍2. 常用数据加密算法(1)对称加密算法(2)非对称加密算法(3)哈希算法3. 数据加密应用实例(1)文件加密(2)网络通信加密(3)数字签名四、实验步骤1. 导入PyCrypto库2. 生成随机密钥3. 选择加密算法4. 加密数据5. 解密数据6. 验证加密和解密结果五、实验结果与分析1. 对称加密算法(1)实验步骤- 生成随机密钥- 选择AES加密算法- 加密数据- 解密数据- 验证加密和解密结果(2)实验结果- 加密和解密结果一致,说明加密算法正确2. 非对称加密算法(1)实验步骤- 生成公钥和私钥- 选择RSA加密算法- 使用公钥加密数据- 使用私钥解密数据- 验证加密和解密结果(2)实验结果- 加密和解密结果一致,说明加密算法正确3. 哈希算法(1)实验步骤- 选择SHA-256哈希算法- 对数据进行哈希处理- 验证哈希结果(2)实验结果- 哈希结果正确,说明哈希算法正确4. 数据加密应用实例(1)文件加密- 加密实验数据文件- 解密文件- 验证加密和解密结果(2)网络通信加密- 使用SSL/TLS协议进行加密通信- 验证加密通信效果(3)数字签名- 使用私钥对数据进行签名- 使用公钥验证签名- 验证数字签名正确性六、实验总结1. 通过本次实验,我们对数据加密的基本原理和方法有了更深入的了解。
2. 掌握了常用的数据加密算法及其应用,如AES、RSA和SHA-256等。
3. 熟悉了数据加密在实际应用中的操作流程,提高了信息安全意识和技能。
七、实验心得1. 数据加密技术在保障信息安全方面具有重要意义,对于保护个人隐私、商业秘密和国家信息安全具有重要意义。
现代密码算法实验报告(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加密的原理和应用。
信息安全技术实验报告

信息安全技术实验报告一.实验目的本实验旨在探究信息安全技术在网络通信中的应用,了解加密算法和数字签名的基本原理,并通过实际操作掌握其具体实现过程。
二.实验内容1.对称加密算法实验-选择一种对称加密算法,如DES或AES,了解其基本原理和加密流程。
- 使用Python编写对称加密算法的实现程序。
-在实验过程中,通过设计不同的密钥长度和明文信息,观察加密结果的变化。
2.非对称加密算法实验-选择一种非对称加密算法,如RSA,了解公钥和私钥的生成方法。
- 使用Python编写非对称加密算法的实现程序。
-在实验中,生成一对密钥,并将公钥用于加密明文,私钥用于解密密文。
观察加密和解密过程是否正确。
3.数字签名实验-了解数字签名的基本原理和应用场景。
- 使用Python编写数字签名的实现程序。
-在实验中,生成一对密钥,并使用私钥对明文进行签名,再使用公钥验证签名的正确性。
三.实验步骤及结果1.对称加密算法实验-选择了AES加密算法,其基本原理是将明文分组并通过多轮加密运算得到密文。
- 编写了Python程序实现AES加密算法,并进行了调试。
-在不同的密钥长度和明文信息下,得到了不同的加密结果。
观察到密钥长度的增加可以提高加密的安全性。
2.非对称加密算法实验-选择了RSA加密算法,其基本原理是使用两个密钥,公钥用于加密,私钥用于解密。
- 编写了Python程序实现RSA非对称加密算法,并进行了调试。
-成功生成了一对密钥,并使用公钥加密明文,私钥解密密文,观察到加密和解密结果正确。
3.数字签名实验-了解到数字签名可以保证数据的完整性和真实性。
- 编写了Python程序实现数字签名的生成和验证功能,并进行了调试。
-成功生成了一对密钥,并使用私钥对明文进行签名,再使用公钥验证签名的正确性。
四.实验总结本次实验通过对称加密算法、非对称加密算法和数字签名的实现,加深了对信息安全技术的理解和认识。
通过实际操作,掌握了加密算法和数字签名的基本原理和实现过程。
广工网络工程 网络安全试验

网络安全实验报告课程名称网络安全实验名称实验1对称密码算法DES 实验2非对称密码算法RSA学生学院自动化学院 _____专业班级网络工程班学号学生姓名指导教师曾启杰2012 年6月 14 日实验一对称密码算法DES一、实验目的通过用DES算法对实际的数据进行加密和解密来深刻了解DES的运行原理。
二、实验环境运行Windows或Linux操作系统的PC机,具有gcc(Linux)、VC(Windows)等C语言编译环境。
三、实验内容和步骤(1)对一段不少于1000字节(字符)的明文进行加密和解密,提交软件界面和执行结果。
主要的成员变量及函数:class CLab1Dlg : public CDialog{int textLength; // 明文的字节数(=密文的字节数)int fulltextLength; // 补齐明文块之后的字节数unsigned char key[8]; //用户输入的密钥unsigned char plaintext[2000]; //明文存储区unsigned char ciphertext[2000]; //密文存储区unsigned char plaintext16[6001]; //16进制明文存储区unsigned char ciphertext16[6001]; //16进制密文存储区void encryptOneBlock(unsigned char *pt, unsigned char *ct,des_key *skey);// 加密一个明文块void decryptOneBlock(unsigned char *ct, unsigned char *pt,des_key *skey);// 解密一个密文块void getText(CString fromtext, unsigned char * totext, int &textLength);//存储用户输入的明文或密文,返回其首地址和长度(字节数)void encryptAll(unsigned char *pt, unsigned char *ct);// 加密全部明文void decryptAll(unsigned char *ct, unsigned char *pt);// 解密全部密文void show16(unsigned char fromtext[], unsigned char totext[], int length);//转换成16进制程序主要代码:void CLab1Dlg::OnButton1() //加密{UpdateData(TRUE); //控件界面显示的数据传到控件变量getT ext(m_PlainT ext, plaintext, textLength); //获取编辑框的明文encryptAll(plaintext, ciphertext); //对明文进行加密m_CipherT ext = ciphertext;show16(plaintext, plaintext16, textLength);show16(ciphertext, ciphertext16, fulltextLength);m_PlainT ext16 = plaintext16;m_CipherT ext16 = ciphertext16;UpdateData(FALSE); //控件变量的数据传到控件界面显示}void CLab1Dlg::OnButton2() //解密{UpdateData(TRUE); //控件界面显示的数据传到控件变量m_CipherT ext = ciphertext;getT ext(m_CipherT ext, ciphertext, textLength); //获取编辑框的密文decryptAll(ciphertext, plaintext); //对密文进行解密m_PlainT ext = plaintext;show16(plaintext, plaintext16, textLength);show16(ciphertext, ciphertext16, textLength);m_PlainT ext16 = plaintext16;m_CipherT ext16 = ciphertext16;UpdateData(FALSE); //控件变量的数据传到控件界面显示}void CLab1Dlg::getT ext(CString fromtext, unsigned char *totext, int &textLength){textLength = fromtext.GetLength();int i;for(i=0;i<textLength;i++)totext[i] = fromtext.GetAt(i);for(i=textLength;i<2000;i++)totext[i] = 0;}void CLab1Dlg::encryptAll(unsigned char *pt, unsigned char *ct){des_key skey;unsigned char s[8]={0,0,0,0,0,0,0,0};for(int j=0;j<m_externkey.GetLength();j++)s[j] = m_externkey.GetAt(j);des_setup(s,8,0,&skey); //生成每轮所需的子密钥int dataBytes = textLength % 8; //最后一个明文块有多少字节的明文数据int i;for(i=0; i<=6-dataBytes; i++) //填充最后一个明文块plaintext[textLength+i]=0;plaintext[textLength+i] = 7 - dataBytes;//最后一个字节表示最后的明文块填充了多少字节的"00H"fulltextLength = textLength+plaintext[textLength+i]+1; //填充最后明文块的明文总长度int t;for(t = 0; t<textLength/8+1;t++) //每8个字节为一组进行加密{encryptOneBlock(pt+8*t,ct+8*t,&skey);}*(ct+8*t)=0;}void CLab1Dlg::encryptOneBlock(unsigned char *pt, unsigned char *ct,des_key *skey)// 加密一个明文块{des_ecb_encrypt(pt,ct,skey);}void CLab1Dlg::decryptAll(unsigned char *ct, unsigned char *pt){des_key skey;unsigned char s[8]={0,0,0,0,0,0,0,0};for(int j=0;j<m_externkey.GetLength();j++)s[j] = m_externkey.GetAt(j);des_setup(s,8,0,&skey); //生成每轮所需的子密钥int t;for(t = 0; t<textLength/8;t++) //每8个字节为一组进行加密{decryptOneBlock(ct+8*t, pt+8*t, &skey);}unsigned char * q = pt+8*t;*q=0;q--;textLength -= *q+1;for(int i=*q;i>0;i--)*(q-i)=0;*q=0;}void CLab1Dlg::decryptOneBlock(unsigned char *pt, unsigned char *ct,des_key *skey)// 加密一个明文块{des_ecb_decrypt(pt,ct,skey);}void CLab1Dlg::OnBUTTONsend() //发送密文{// TODO: Add your control notification handler code hereUpdateData(TRUE);CSocket sendsock;sendsock.Create(0, SOCK_DGRAM, NULL); //自动分配源端口号,数据报类型,本机地址struct sockaddr_in destination; //定义一个Internet通信域的套接字地址memset(&destination, 0, sizeof(struct sockaddr_in)); //清零destination.sin_family = AF_INET;destination.sin_port = htons( (unsigned short)(m_port) );DWORD sipadd; //32位的IP地址m_ipadd.GetAddress( sipadd ); //获得输入的IP地址destination.sin_addr.s_addr = htonl (sipadd);sendsock.SendT o( ciphertext, fulltextLength, (SOCKADDR*)(&destination), sizeof(struct sockaddr_in), 0);sendsock.Close();}void CLab1Dlg::OnBUTTONrecv(){// TODO: Add your control notification handler code hereUpdateData(TRUE);CSocket recvsock;recvsock.Create(m_port, SOCK_DGRAM, NULL); //分配用户输入的端口号,数据报类型,本机地址struct sockaddr_in source; //定义一个Internet通信域的套接字地址int addrlen = sizeof(struct sockaddr_in);for(int t=0;t<2000; t++){ciphertext[t] = 0;}recvsock.ReceiveFrom( ciphertext, 2000, (SOCKADDR*)(&source), &addrlen,0 );DWORD sipadd = ntohl( source.sin_addr.s_addr ); //32位的IP地址m_ipadd.SetAddress( sipadd ); //获得输入的IP地址m_CipherT ext = ciphertext;show16(ciphertext, ciphertext16, 200);m_CipherT ext16 = ciphertext16;UpdateData(FALSE);recvsock.Close();}程序执行结果:发送方:接收方:(2)问题回答:对输入的十六进制数加密(把输入的字符转化成整数。
加密算法实验报告

#### 实验名称:加密算法设计与实现#### 实验时间:2023年10月15日#### 实验地点:XX大学计算机科学与技术学院实验室#### 实验者:[姓名] [学号]#### 一、实验目的1. 理解并掌握常见的加密算法原理,包括对称加密算法和非对称加密算法。
2. 能够运用所学知识设计并实现简单的加密算法。
3. 通过实验加深对加密算法安全性的认识。
#### 二、实验内容本次实验主要包括以下内容:1. 对称加密算法:DES算法实现。
2. 非对称加密算法:RSA算法实现。
3. 加密算法的安全性分析。
#### 三、实验原理1. 对称加密算法(DES):DES算法是一种基于密钥的加密算法,其密钥长度为56位。
它将64位的明文输入经过16轮迭代,最终生成64位的密文输出。
DES算法的核心是它的密钥生成和迭代加密过程。
2. 非对称加密算法(RSA):RSA算法是一种基于公钥和私钥的非对称加密算法。
它利用了数论中的大数分解难题。
RSA算法包括密钥生成、加密和解密三个过程。
其中,公钥用于加密,私钥用于解密。
#### 四、实验步骤1. DES算法实现:- 实现DES算法的初始化密钥生成。
- 实现DES算法的16轮迭代加密过程。
- 对明文进行加密,生成密文。
2. RSA算法实现:- 实现RSA算法的密钥生成过程。
- 实现RSA算法的加密和解密过程。
- 对明文进行加密,生成密文;对密文进行解密,恢复明文。
3. 加密算法的安全性分析:- 分析DES算法和RSA算法的安全性。
- 比较两种算法的优缺点。
#### 五、实验结果与分析1. DES算法:- 加密速度较快,适合加密大量数据。
- 密钥长度较短,安全性相对较低。
2. RSA算法:- 加密速度较慢,适合加密少量数据。
- 密钥长度较长,安全性较高。
#### 六、实验总结通过本次实验,我们掌握了DES和RSA两种加密算法的原理和实现方法。
在实验过程中,我们深刻认识到加密算法在信息安全中的重要性。
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);
实验二 加密算法实验

实验二加密算法实验
【实验目的】
1) 掌握非对称加密算法在实际中的应用中优缺点。
2) 对称加密算法和非对称加密算法的配合使用。
【实验环境】
Windows系统,JCreator。
【实验重点及难点】
重点:1) DES和RSA的优缺点。
2) RSA在密钥传递中的使用。
难点:编写DES和RSA组合程序。
【实验内容】
1、阅读毕博平台上的关于DES和RSA使用示例代码,并对代码进行测试和修改,对比二者的加密速度。
2、如下图所示,Alice和Bob分别有一对公私钥,如果Alice发送秘密文件给Bob,结合应用实际,将如何设计该加密方案?设计完成该代码的编写。
提示:对DES和RSA进行合并,完成如下目的,并将修改的代码写在实验报告上,(1)利用RSA为Alice和Bob分别生成公私钥对,将公钥保存在public_key目录中,私钥保存在相应的private_A和private_B目录中。
并规定,public_key目录可以公共访问,private只有目录拥有者访问。
(2)利用DES加密文件,使用RSA加密DES密钥,可以将加密后的密钥附在加密后的文件中,也可以形成两个文件,然后写入目录file中。
(3)另外一个人,从目录file中读去文件,并进行解密。
Alice Bob。
加密解码_实训报告

一、实训目的本次实训旨在通过实际操作,加深对加密和解码原理的理解,提高对加密算法的应用能力,并培养在实际工作中运用加密技术保护信息安全的能力。
通过实训,学生能够:1. 掌握常见的加密算法,如对称加密、非对称加密和哈希算法。
2. 理解加密和解码的过程,包括密钥管理、加密操作和验证过程。
3. 学会使用加密工具和库,如Python的cryptography库。
4. 能够根据实际需求选择合适的加密算法,并解决加密过程中遇到的问题。
二、实训环境1. 操作系统:Windows 102. 编程语言:Python3.83. 加密库:cryptography4. 实训工具:PyCharm三、实训原理1. 对称加密:使用相同的密钥进行加密和解密。
常见的对称加密算法有AES、DES 和3DES。
2. 非对称加密:使用一对密钥,公钥用于加密,私钥用于解密。
常见的非对称加密算法有RSA和ECC。
3. 哈希算法:将任意长度的数据映射为固定长度的哈希值,用于验证数据的完整性和一致性。
常见的哈希算法有SHA-256、MD5和SHA-1。
四、实训过程1. 对称加密实训:- 使用AES算法对一段文本进行加密和解密。
- 使用DES算法对一段文本进行加密和解密。
- 比较不同对称加密算法的效率和安全性。
2. 非对称加密实训:- 使用RSA算法生成密钥对,并使用公钥加密、私钥解密一段文本。
- 使用ECC算法生成密钥对,并使用公钥加密、私钥解密一段文本。
- 比较不同非对称加密算法的效率和安全性。
3. 哈希算法实训:- 使用SHA-256算法对一段文本进行哈希运算。
- 使用MD5算法对一段文本进行哈希运算。
- 比较不同哈希算法的效率和安全性。
4. 实际应用实训:- 使用加密工具和库对文件进行加密和解密。
- 使用加密算法保护通信过程中的数据传输安全。
- 分析加密过程中可能出现的安全问题,并提出解决方案。
五、实训结果1. 成功掌握了AES、DES、RSA、ECC和SHA-256等加密算法的原理和应用。
文件加密操作实验报告

文件加密操作实验报告概述文件加密是一种保护数据安全的重要手段,能够将敏感信息转化为无意义的字符序列,防止信息被非法获取和篡改。
本实验旨在探索文件加密的原理、方法和应用,并通过具体实例演示文件加密操作的实施过程。
原理介绍文件加密的基本原理是通过一定的算法将原始数据转化成难以理解的密文,只有经过相应的解密算法才能将密文恢复成可读的明文。
常见的加密算法如对称加密算法、非对称加密算法和哈希算法等。
1. 对称加密算法对称加密算法使用相同的密钥进行加密和解密操作。
常用的对称加密算法有DES、AES等。
其流程如下: 1. 选择一个密钥。
2. 将明文划分为固定长度的数据块。
3. 对每个数据块进行加密,生成对应的密文。
4. 将密文传输或保存。
5. 接收方使用相同的密钥对密文进行解密,恢复成明文。
2. 非对称加密算法非对称加密算法使用一对密钥,分别为公钥和私钥。
公钥负责加密,私钥负责解密。
常见的非对称加密算法有RSA、DSA等。
其流程如下: 1. 生成一对密钥,包括公钥和私钥。
2. 将公钥传输给加密方,私钥保密不公开。
3. 加密方使用公钥对明文进行加密,生成密文。
4. 密文传输给解密方。
5. 解密方使用私钥对密文进行解密,得到明文。
3. 哈希算法哈希算法将任意长度的数据转化为固定长度的哈希值,具有不可逆、唯一性和固定性的特点。
常用的哈希算法有MD5、SHA-1等。
其流程如下: 1. 将原始数据作为输入。
2. 哈希算法对输入数据进行计算,生成哈希值。
3. 可以通过哈希值验证数据的完整性,但无法从哈希值反推原始数据。
4. 哈希算法具有唯一性,不同的数据生成的哈希值一定是不同的。
方法与实验为了深入了解文件加密操作,我们进行了以下实验。
1. 对称加密实验1.选择一个对称加密算法,如AES。
2.准备一份明文文件,如.txt文件。
3.选择一个密钥,进行加密操作。
4.生成密文文件,并将其保存。
5.使用相同的密钥进行解密操作,将密文恢复成明文。
2非对称加密实验

(6)解密
清除明文文本框中的内容,点击“解密”按钮对密文进行解密,明文默认以十六进制形式显示在明文文本框中,如图1.1.720所示;可选择以文本形式查看明文。
(二)扩展实验
(1)在扩展实验中点击“ELGAMAL扩展实验”按钮,进入ELGAMAL扩展实验窗体。
(1)点击“扩展实验”框中的“RSA计算”按钮,进入RSA计算窗体。
输入报文信息,点击“计算MD5值”生成报文信息的信息摘要,选择p、q值,计算n、φ(n)、e和d并输入相应的文本框中,点击“检验”按钮对计算的各个参数值进行检验。
检验无误后,根据上述计算得到的RSA私钥,计算报文MD5值即报文摘要的前8位的签名值,并输入相应的文本框;点击“生成签名并检验”按钮,检验签名输入是否正确并自动生成消息摘要前8位的签名值并显示,
标准方法可选择公钥加密/私钥解密形式和公钥加密/私钥解密形式进行加解密,此处以公钥加密/私钥解密形式进行加解密,公钥加密/私钥解密可参照完成;注意在一次加解密过程中不要重新生成密钥对。
点击“公钥加密”按钮使用生成的公钥对明文进行加密,密文以十六进制显示在密文文本框中;清除明文文本框中的内容,点击“私钥解密”按钮对密文进行解密,明文默认以文本形式显示在明文文本框中,如图1.1.72所示;可选择以16进制查看明文。
具体步骤可参照古典密码实验中实验步骤二。
三、ECC
(一)扩展实验
(1)在扩展实验中点击“ECC扩展实验”按钮,进入ECC扩展实验窗体。
(2)确定合适的椭圆曲线,获取该曲线的基础解点集。首先,在主窗口的椭圆曲线组合框内的相应文本框中,输入素数p,以及椭圆曲线的2个系数a和b;然后,点击“测试曲线”,得到该椭圆曲线的基础解点集。
加密算法实验报告

加密算法实验报告加密算法实验报告引言在当今信息时代,数据安全是一个非常重要的问题。
随着互联网的发展和普及,人们在进行各种在线交易、通信和存储时,需要保护自己的个人隐私和敏感信息。
为了实现数据的保密性和完整性,加密算法应运而生。
本实验旨在通过实际操作,了解和掌握几种常见的加密算法,包括对称加密算法和非对称加密算法。
一、对称加密算法对称加密算法是指加密和解密使用相同的密钥的算法。
在实验中,我们选择了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实验报告

RSA实验报告一实验目的1.了解非对称加密机制2.理解RSA算法的加解密原理3.熟悉Java的学习以及运用Java实现RSA算法的加解密过程二实验背景在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。
加密算法E和解密算法D 也都是公开的。
虽然秘密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK。
正是基于这种理论,1978年出现了著名的RSA 算法,它通常是先生成一对RSA 密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册。
为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。
这就使加密的计算量很大。
为减少计算量,在传送信息时,常采用传统加密方法与公开密钥加密方法相结合的方式,即信息采用改进的DES或IDEA对话密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。
对方收到信息后,用不同的密钥解密并可核对信息摘要。
RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。
RSA是被研究得最广泛的公钥算法,从提出到现在的这么多年里,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。
三实验原理1.非对称密钥加解密概述使用对称密钥加密体制进行保密通信时,任意不同的两个用户之间都应该使用互不相同的密钥。
这样,如果一个网络中有n个用户,他们之间彼此都可能进行秘密通信,这时网络中将需要n(n-1)/2个密钥(其中,每个用户都需要保存n-1个密钥),这样巨大的密钥量给密钥分配和管理带来了极大的困难。
另外,随着计算机网络,特别是因特网的发展,网络上互不相识的用户可能需要进行保密的会话(例如,如果用户在进行电子商务活动时,需要保密的连接,这时的客户对象可能根本不是固定的对象)。
最后,对称密钥加密机制难以解决签名验证问题。
非对称密钥加密也称为公开密钥加密,或者叫做公钥加密算法。
课程报告-非对称加密算法的实现

非对称加密算法的实现一、设计内容、算法原理非对称密码系统即公钥密码系统,主流分为基于大整数分解难度,基于离散对数计算难度和椭圆曲线公钥密码三类。
本次实验主要介绍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)。
云南大学软件学院实验报告
课程:信息安全学实验学期:2012-2013学年第二学期任课教师:金鑫
专业:学号:姓名:成绩:
实验2-非对称加密实验
一、实验目的
了解非对称密码的加密和解密特点,理解加密解密与数字签名的基本原理,掌握PGP加密的原理,使用PGP加密软件加密信息。
二、实验原理
公钥和私钥是互补的,就是说用公匙加密的密文可以用私匙解密,反过来也一样。
假设甲要寄信给乙,他们互相知道对方的公匙。
甲就用乙的公匙加密邮件寄出,乙收到后就可以用自己的私匙解密出甲的原文。
由于没别人知道乙的私匙所以即使是甲本人也无法解密那封信,这就解决了信件保密的问题。
另一方面由于每个人都知道乙的公匙,他们都可以给乙发信,那么乙就无法确信是不是甲的来信。
认证的问题就出现了,这时候数字签名就有用了。
甲用自己的私匙加密,附加在邮件上,再用乙的公匙将整个邮件加密。
这样这份密文被乙收到以后,乙用自己的私匙将邮件解密,得到甲的原文和签名,乙的PGP也从原文计算出一个结果与甲的公匙解密签名得到的数比较,如果符合就说明这份邮件确实是甲寄来的。
三、实验步骤
1、安装PGP软件,用PGP加密、解密文件
密钥加密
口令加密解密
口令解密
2、发送PGP加密和签名后的电子邮件并解密邮件将要发送的文件添加到PGP压缩包
对文件进行加密输入邮件地址
签名保存
生成加密后的PGP文件
将加密后的PGP文件发送给搭档
对方收到邮件
收到的PGP文件解密后得到原文件
解密后的文件可以打开并还原,如果密钥不配对打开将是乱码。
四、回答问题
1)简要阐述加密解密与数字签名的原理和异同
数字签名和数字加密的过程虽然都使用公开密钥体系,但实现的过程正好相反,使用的密钥对也不同。
数字签名使用的
是发送方的密钥对,发送方用自己的私有密钥进行加密,接收
方用发送方的公开密钥进行解密,这是一个一对多的关系,任
何拥有发送方公开密钥的人都可以验证数字签名的正确性。
数
字加密则使用的是接收方的密钥对,这是多对一的关系,任何
知道接收方公开密钥的人都可以向接收方发送加密信息,只有
唯一拥有接收方私有密钥的人才能对信息解密。
另外,数字签
名只采用了非对称密钥加密算法,它能保证发送信息的完整
性、身份认证和不可否认性,而数字加密采用了对称密钥加密
算法和非对称密钥加密算法相结合的方法,它能保证发送信息
保密性。
2)简述用PGP发送和接收加密邮件的流程
首先我们要对我们要对outlook进行相关的设置。
这样保证我们可以正确的受到邮件。
然后我们把公钥发给对方,对方
用我们提供的公钥进行加密,然后通过附件的方式发给我们。
我们从附件里面提前后在用自己电脑上的私钥进行解密,整个
加密过程就这样完成了。
3)非对称密码与古典密码的区别与联系
非对称密钥有两个密钥,即一个是公钥另一个是公钥,这样我们一般是把公钥发给对方,加密后我们用自己的私钥解
密,即使别人知道了我们的公钥也不可能解开我们的文件,安
全性提高了很多,同时用私钥加密即我们的电子签名,具有两
用途,但是非对称是从古典密码发展而来的。
但是古典密码的
安全性比较低,当你把密钥发给对方的时候,如果被截获那么
所有的加密都是白费力气了。
这样安全性非常的低。
总的来说
就是非对称是从古典密码发展而来的,但是安全性比古典密码
高很多。
而且用途方面也增加了许多。
五、实验小结
在本次实验中,首先PGP的安装就遇到了问题。
寻找自己电脑可用的高版本的PGP花费了一些时间,网络上很多资源下
载了但不可用。
最后下载了一个中文破解版的PGP10.2版本
的,但安装过程中也不顺利,上网查资料后下载注册机破解之后才能用。
首先要使用PGP创建一个密钥,然后使用PGP加密解密文件,这些比较很简单。
在第二个步骤也就是邮件加密时遇到了困难,刚开始不知道用哪个密钥加密,哪个解密,在仔细研究PGP使用指导说明以及反复实践之后才明白是用对方的公钥加密之后发送,对方使用自己的私钥解密,最终完成实验。