实验2 非对称加密实验

合集下载

非对称密码算法实验原理

非对称密码算法实验原理

任务一 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篇)

现代密码算法实验报告(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加密实验报告引言:在当今数字化时代,保护个人隐私和数据安全变得尤为重要。

随着互联网的普及,我们的个人信息和敏感数据越来越容易暴露在网络威胁之下。

为了解决这个问题,加密技术成为了一种重要的手段。

本实验旨在探究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)问题回答:对输入的十六进制数加密(把输入的字符转化成整数。

实验二 加密算法实验

实验二 加密算法实验

实验二加密算法实验
【实验目的】
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. 对称加密算法对称加密算法使用相同的密钥进行加密和解密操作。

常用的对称加密算法有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非对称加密实验

2非对称加密实验
点击“加密”按钮,使用公开密钥Y对明文加密,密文以十六进制形式显示在密文文本框中。
(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算法的加密和解密过程,我们同样将明文“加密解密实验报告”转化为了密文,并通过解密过程将密文还原为了明文。

实验二--PGP加密实验

实验二--PGP加密实验

实验二--PGP加密实验实验二 PGP加密实验一、实验目的:1.熟悉非对称加密算法。

2.掌握私钥和公钥再签名和加密中的应用。

3.了解PGP工具如何实现数据的完整性和保密性二、实验环境计算机、PGP工具、局域网或互联网三、实验原理PGP简介:PGP软件是一款非常优秀的加密软件。

它能实现对文件、邮件、磁盘、以及ICQ通信内容实现加密、解密、数字签名的功能,适合企业、政府机构、卫生保健部门、教育部门、家庭个人进行安全通信使用。

PGP的加密是采用了RSA以及杂合传统的加密算法来实现加密的。

加密的关键在于一对密钥,该密钥对包含一个公钥以及一个私钥。

公钥和私钥是根据某种数学函数生成的,并且通过一个密钥来推测另外一个密钥几乎是不可能的。

其中,明文可以用公钥来加密,然后用私钥解密得到原文,明文也可以用私钥加密,然后用公钥解密得到原文。

并且,一般来说,公钥用于加密,私钥用于数字签名。

而且公钥是发给别人用来加密要发送给自己的文件的,而私钥是自己保留个人使用,不能供别人使用的。

需要注意的是,明文通过用户A的公钥加密后,只能使用用户A的私钥解密,不能采用A以外的任何其他人的私钥解密;使用用户A的私钥加密的文件只能用A的公钥解密,不能使用A以外的任何其他人的公钥解密。

由于私钥是自己保留,不给别人知道,因此,私钥除了加密的功能之外,还可以具有数字签名的作用。

其机制在于:私钥只有自己才有,别人是没有你的私钥的,你用私钥可以对文件进行签名,而别人由于没有你的私钥,无法进行同样的签名,这样就能证明该文件是从你这里发出去的。

而公钥是提供给要和你安全通信的人使用的。

例如A想要和你通信,但是希望同新的内容不要被别人看到,就可以用你的公钥来对发送的内容进行加密,而你收到A发来的信息后就可以用你的私钥解密,可以阅读文件的内容。

假设A 发送的内容在途中被人截获了,但是没有你的私钥的话,一样是看不到明文的。

这样PGP就能实现加密以及数字签名的功能。

实验2 利用PGP实施非对称加密

实验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位,并要求进行确认一遍,即重复一遍。

非对称加密(2)非对称加密算法

非对称加密(2)非对称加密算法

⾮对称加密(2)⾮对称加密算法2基本流程很简单,那么公钥加密,私钥解密的算法原理到底是什么呢?本节简要阐述RSA算法、DSA算法、ECC算法、Diffie-Hellman算法的基本原理,其中涉及很多数论、离散数学以及解析⼏何⽅⾯的数学知识,感兴趣的读者可以借此加强相关理论基础。

RSA算法RSA算法是当前最著名、应⽤最⼴泛的公钥系统,1978年由美国⿇省理⼯学院的Ron Rivest、 Adi Shamir 和LeonardAdleman在论⽂《获得数字签名和公开钥密码系统的⽅法》中提出的。

这是⼀个基于数论的⾮对称(公开钥)密码体制,采⽤分组加密⽅式。

其名称来⾃于三个发明者的姓名⾸字母。

它的安全性是基于⼤整数素因⼦分解的困难性,⽽⼤整数因⼦分解问题是数学上的著名难题,⾄今没有有效的⽅法予以解决,因此可以确保RSA算法的安全性。

RSA系统是公钥系统的最具有典型意义的⽅法,⼤多数使⽤公钥密码进⾏加密和数字签名的产品和标准使⽤的都是RSA算法。

RSA算法是第⼀个既能⽤于数据加密也能⽤于数字签名的算法,因此它为公⽤⽹络上信息的加密和鉴别提供了⼀种基本的⽅法。

它通常是先⽣成⼀对RSA 密钥,⼀个是保密密钥,由⽤户保存;另⼀个为公开密钥,可对外公开,甚⾄可在⽹络服务器中注册,⼈们⽤公钥加密⽂件发送给个⼈,个⼈就可以⽤私钥解密接收。

为提⾼保密强度,RSA密钥⼀般为1024或者2048位。

RSA算法的⼯作原理如下:步骤 1任意选取两个不同的⼤质数p和q,计算乘积r=p*q。

步骤 2任意选取⼀个⼤整数e,e与(p-1)*(q-1)互质,整数e⽤做加密密钥。

注意:e的选取是很容易的,所有⼤于p和q的质数都可⽤。

步骤 3确定解密密钥d: d * e = 1 mod(p - 1)*(q - 1)根据e、p和q可以容易地计算出d。

步骤 4公开整数r和e,但是不公开d。

步骤 5将明⽂P(P是⼀个⼩于r的整数)加密为密⽂C,计算⽅法为C = P^e mod r 。

实训指导2.1-2利用PGP实施非对称加密-技巧与故障排除.

实训指导2.1-2利用PGP实施非对称加密-技巧与故障排除.

国家高等职业教育网络技术专业教学资源库计算机网络安全技术与实施课程资源子库学习情境2:实训指导2.1-2利用PGP实施非对称加密-技巧与故障排除实训指导2.1-2一、实训题目:利用利用PGP实施非对称加密。

二、实训目的:1. 掌握利用PGP实施非对称加密的方法;2. 能够对文件在网传传输过程中提供完整性保护;3. 能够合理选用加密算法,区分对称与非对称加密;4. 利用PGP对Outlook Express加密mail。

三、实训要求:1. 掌握PGP软件的安装与使用方法;2. 学会利用Apocalypso软件进行非对称加密的方法;3. 熟悉建立FTP服务器的方法和过程。

四、实训网络场景或网络拓扑结构:网络拓扑结构图如下:五、实训步骤:1. 实训任务环境设置在如下图所示的环境下进行分组实验,两个人一组,以A与B为例,A与B分别将自己的公钥上传到由教师指定的FTP中,以便到两者互相获取到对方的公钥,即将对方的公钥导入到自己的系统中来。

PGP机制:甲用自己的私钥把明文消息加密,然后用乙的公钥加密形成密文发送给乙。

乙收到密文后首先用自己的私钥解密,然后用甲的公钥解密就得到明文的消息。

2.XP2上安装好PGP8.0,配置好用户的公钥。

3.用PGP加密发邮件。

(1)zhangsan给wanger发邮件(既加密又签名)(2)点击“发送”弹出对话框,因为签名要用zhangsan的私钥,这里输入私钥保护密码。

(3)wanger收zhangsan发来的已加密的邮件。

(4)解密(5)使用wanger的公钥为zhangsan加密。

(6)解密后可以看到数字签名和信的内容附:利用PGP实施非对称加密-技巧与故障排除1. PGP实训技巧由于PGP安装后需要重新启动系统,可在有还原的主机上使用虚拟机实现,建议两人一组。

2.PGP实训技巧与故障排除:导入公钥有效期一定要注意,有的计算机系统默认时间可能不对,即你的PGP软件当前系统时间一定要处于导入公钥的时间范围内,否则导入会不成功。

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()方法名称:产生大数的方法。

实验二 数据加密标准DES及非对称RSA算法实现

实验二 数据加密标准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)即为秘密密钥。

五、主要程序代码
请把主要实现的程序代码写入此栏
六、实验结果。

加密算法实验报告

加密算法实验报告

#### 实验名称:加密算法设计与实现#### 实验时间: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两种加密算法的原理和实现方法。

在实验过程中,我们深刻认识到加密算法在信息安全中的重要性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验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函数)对接收的信息本身生成新的信息摘要,再使用信息发送者的公钥对信息摘要进行验证,以确认信息发送者的身份和信息是否被修改过。

数字签名和数字加密的过程虽然都使用公开密钥体系,但实现的过程正好相反,使用的密钥对也不同。

数字签名使用的是发送方的密钥对,发送方用自己的私有密钥进行加密,接收方用发送方的公开密钥进行解密,这是一个一对多的关系,任何拥有发送方公开密钥的人都可以验证数字签名的正确性。

数字加密则使用的是接收方的密钥对,这是多对一的关系,任何知道接收方公开密钥的人都可以向接收方发送
加密信息,只有唯一拥有接收方私有密钥的人才能对信息解密。

另外,数字签名只采用了非对称密钥加密算法,它能保证发送信息的完整性、身份认证和不可否认性,而数字加密采用了对称密钥加密算法和非对称密钥加密算法相结合的方法,它能保证发送信息保密性。

2) 简述用PGP发送和接收加密邮件的流程
首先我们要对我们要对outlook进行相关的设置。

这样保证我们可以正确的受到邮件。

然后我们把公钥发给对方,对方用我们提供的公钥进行加密,然后通过附件的方式发给我们。

我们从附件里面提前后在用自己电脑上的私钥进行解密,整个加密过程就这样完成了。

3) 非对称密码与古典密码的区别与联系
非对称密钥有两个密钥,即一个是公钥另一个是公钥,这样我们
一般是把公钥发给对方,加密后我们用自己的私钥解密,即使别人知道了我们的公钥也不可能解开我们的文件,安全性提高了很多,同时用私钥加密即我们的电子签名,具有两用途,但是非对称是从古典密码发展而来的。

但是古典密码的安全性比较低,当你把密钥发给对方的时候,如果被截获那么所有的加密都是白费力气了。

这样安全性非常的低。

总的来说就是非对称是从古典密码发展而来的,但是安全性比古典密码高很多。

而且用途方面也增加了许多~。

相关文档
最新文档