实验五 数据加密与解密实验
- 格式:doc
- 大小:773.50 KB
- 文档页数:13
实验五文件数据加密与解密1.实验目的(1)练习数据加密与解密的实现方法。
(2)练习将加密数据保存到文件中的方法。
(3)练习从文件中读取加密后的数据的方法。
2.建议用时建议用4小时完成本实验,或者根据自己的理解情况调整实际需要的时间。
3.实验内容设计一个Windows应用程序,实现下面的功能。
(1)使用某种加密算法加密窗体上TextBox控件中显示的文字,然后将其保存到文本文件MyData.txt中。
(2)程序运行时,首先自动判断加密后的文件是否存在,如果文件存在,则根据加密密钥对加密内容进行解密,并将解密后的结果显示在窗体的TextBox控件中。
4.实验步骤提示要顺利完成本实验,需要解决4个问题:一是采用哪种算法进行加密;二是如何将加密后的数据保存到文件中;三是如何保存加密密钥;四是如何将加密后的内容读取出来并进行解密处理。
由于只有知道加密密钥才能进行解密,而实验中要求程序开始运行时就判断是否有加密后的文件,并对文件进行解密。
因此如何在加密的同时将加密密钥也保存下来是完成本实验的关键。
这个实验的实现方法有多种,参考解答仅仅是其中比较简单的一种。
具体实现方法可以按照下面的步骤进行。
(1)创建一个名为DataEncrypt的Windows应用程序,在【解决方案资源管理器】中,将Form1.cs换名为FormMain.cs。
(2)从【工具箱】中向设计窗体拖放一个TextBox控件、一个【保存】按钮和一个【打开】按钮。
界面设计效果如图1-15所示。
图5-1 界面设计(3)在【保存】按钮的Click事件代码中,创建MyData.txt文件,先将加密密钥写入文件中,然后再写入加密后的文本内容。
参考代码如下。
private void buttonSave_Click(object sender, EventArgs e){TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();try{FileStream fileStream = File.Open(fileName, FileMode.Create);fileStream.WriteByte(Convert.ToByte(tdes.Key.Length));fileStream.Write(tdes.Key, 0, tdes.Key.Length);fileStream.WriteByte(Convert.ToByte(tdes.IV.Length));fileStream.Write(tdes.IV, 0, tdes.IV.Length);CryptoStream cryptoStream = new CryptoStream(fileStream,tdes.CreateEncryptor(tdes.Key, tdes.IV),CryptoStreamMode.Write);StreamWriter streamWriter = new StreamWriter(cryptoStream);streamWriter.Write(textBox1.Text);streamWriter.Close();cryptoStream.Close();fileStream.Close();textBox1.Text = "";MessageBox.Show("保存成功");}catch (Exception err){MessageBox.Show(err.Message, "出错");}}(4)编写一个DecryptFromFile方法,先读出加密密钥,再读出加密后的文本,并根据读出的密钥进行解密,然后将解密结果显示出来。
第九章、实验报告实验一、设置Windows启动密码一、实验目的:利用Windows启动密码保存重要文件。
二、实验步骤:1、在Windows XP系统中选择开始——运行,在打开输入框中“syskey.exe”,点击确定,打开“保证Windows XP账户数据库的安全”对话框。
2、单击【更新】,打开【启动密码】对话框,然后输入密码,在【确认】文本框中再次输入密码,单击【确定】实验二、为word文档加密解密一、实验目的:保护数据的安全二、实验步骤:1、打开一个需要加密的文档,选择【工具】——【选项】——【安全性】然后输入想要设置打开文件时所需的密码2、单击【高级(A)】打开加密类型对话框,选中【加密文档属性】复选框,单击【确定】。
3、打开文件的【确认密码】对话框,输入打开文件时需要的密码,单击【确定】,随即打开【确认密码】对话框,输入密码。
4、保存文件后,重新打开Word文档,打开【密码】,输入打开文件所需的密码,单击【确定】输入修改的密码,单击【确定】破解word密码(1)安装Advanced Office Password Recovery软件,安装完成后打开需要破解的word 文档,进行暴力破解,结果如图所示:实验三、使用WinRAR加密解密文件一.实验目的:加密文件,保证文件的安全性。
二.实验步骤:1、在需要加密的文件夹上右击,选中【添加到压缩文件】打开【压缩文件名和参数】2、选中【压缩文件格式】组合框中的【RAR】并在【压缩选项】中选中【压缩后删除源文件】然后切换到【高级】,输入密码,确认密码。
3、关闭对话框,单击确定,压缩完成后,双击压缩文件,系统打开【输入密码对话框】破解WinRAR加密的文件(1)安装Advanced RAR Password Recovery软件,打开WinRAR加密文件,进行暴力破解,获得密码。
结果如图:实验四:使用文件夹加密精灵加密文件夹一、实验目的:对文件进行加密,保证其安全性二、实验步骤:1、安装文件夹加密精灵软件,设置登录密码。
AES加密解密实验报告实验目的:了解和学习AES加密算法的原理和实现过程,掌握AES加密解密的方法。
实验原理:AES(Advanced Encryption Standard)高级加密标准,是一种对称加密算法,使用相同的密钥进行加密和解密。
AES加密算法使用数学运算和逻辑操作混合的方式,通过多轮迭代和替代、逆替代、置换等步骤,对数据进行加密和解密操作。
实验材料和方法:材料:计算机、Python编程环境。
方法:通过Python编程环境调用AES库函数,进行AES加密解密实验。
实验步骤:1. 导入AES库函数:在Python编程环境中,导入AES的库函数。
```pythonfrom Crypto.Cipher import AESfrom Crypto.Random import get_random_bytes```2. 生成随机密钥:使用get_random_bytes(函数生成一个长度为16字节的随机密钥。
```pythonkey = get_random_bytes(16)```3. 实例化AES加密对象:使用AES.new(函数,传入随机密钥和加密模式“AES.MODE_ECB”创建AES加密对象。
```pythoncipher = AES.new(key, AES.MODE_ECB)```4. 加密数据:使用encrypt(函数,传入要加密的数据进行加密操作。
```pythonmessage = "This is a secret message.".encodeciphertext = cipher.encrypt(message)```5. 解密数据:使用decrypt(函数,传入密文进行解密操作。
```pythonplaintext = cipher.decrypt(ciphertext)```6. 打印加密和解密结果:使用print(函数,打印加密前后和解密后的数据。
一、实验目的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. 数据加密技术在保障信息安全方面具有重要意义,对于保护个人隐私、商业秘密和国家信息安全具有重要意义。
实验报告书实验名称:数据加密与解密摘要此次实验的主要任务是:基于对数据加密方法的理解,通过设计简单的加密程序,完成对简单字符串的加密和解密。
本次实验主要是通过对字符串每个字符加5加密。
针对数据加密、解密,本文主要利用DM5算法对数据进行加5加密,数据揭秘则是数据加密的逆过程。
关键词:数据加密数据解密目录一、问题重述 (1)二、实验目的及要求 (1)2.1 实验目的 (1)2.2 实验要求 (1)2.3实验环境 (1)三、实验相关知识 (2)四、总体设计及思路 (3)4.1 实验思路 (3)4.2总体流程图 (4)五、实验过程 (4)六、实验结果 (12)七、实验总结 (13)一、问题重述基于对各种加密算法的理解,结合各种加密、解密算法,选择合适的加密方法对数据进行加密和解密。
二、实验目的及要求2.1 实验目的1)根据不同的加密算法,在Linux环境下编写C语言程序,实现简单的数据加密与解密;2)通过此次实验了解通信过程中不同的加密方式;3)了解不同的加密算法及加密过程;4)从多种加密和解密方式出发,对加密和解密的知识进行扩展。
2.2 实验要求1)理解部分加密算法例如:DES对称加密算法、加5加密算法的原理及过程;2)根据不同的加密算法,设计加密程序,完成对文件的加密和解密。
2.3实验环境操作系统:Linux操作系统、window10操作系统;C语言环境: vim编辑器、DEV C++编辑器。
硬件环境:机房内电脑及个人笔记本电脑。
三、实验相关知识MD5算法原理:对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
第一步、填充:如果输入信息的长度(bit)对512求余的结果不等于448,就需要填充使得对512求余的结果等于448。
填充的方法是填充一个1和n个0。
java课程设计加密与解密实验报告尊敬的老师:我将向您汇报我的Java课程设计——加密与解密实验报告。
本次实验旨在通过Java程序设计实现一些传统加密算法的加密与解密功能,并进行简单的性能分析。
以下是我的实验报告:一、实验目的通过Java程序设计实现传统加密算法的加密与解密功能,了解加密算法的基础原理,并进行简单的性能分析。
二、实验内容本次实验的主要内容包括:1. 实现Caesar加密算法、Playfair加密算法和Vigenere加密算法的加密与解密功能。
2. 编写能够对文字文件进行加密与解密的Java程序。
3. 对比不同算法的加密与解密性能,进行简单的性能分析。
三、实验步骤1. Caesar加密算法Caesar加密算法是一种简单的字母替换加密方式,通过移动字母表中的字母来生成密文。
例如,如果移动三个字母,则"A"变成"D","B"变成"E",以此类推。
加密和解密使用相同的密钥,在本实验中为整数。
实现步骤如下:① 定义CaesarCipher类,此类中包含了加密与解密方法。
② 加密方法接收一个字符串和密钥,通过对字符串中的每个字母进行移动,生成密文。
③ 解密方法接收一个密文和密钥,通过对密文中的每个字母进行相反的移动,还原出明文。
2. Playfair加密算法Playfair加密算法是一种算法复杂度较高的加密方式,利用了一个5x5的矩阵来进行加密。
实现步骤如下:① 定义PlayfairCipher类,此类中包含了加密与解密方法。
② 加密方法接收一个字符串和密钥,将明文分组并替换成加密后的密文。
③ 解密方法接收一个密文和密钥,将密文分组并替换成还原出的明文。
3. Vigenere加密算法Vigenere加密算法是一种基于凯撒密码的加密算法,使用一个关键词来对明文进行加密。
实现步骤如下:① 定义VigenereCipher类,此类中包含了加密与解密方法。
竭诚为您提供优质文档/双击可除加密解密实验报告篇一:Aes加密解密实验报告信息安全工程课程实验报告Aes加密解密的实现课程名称:信息安全工程学生姓名:学生学号:专业班级:任课教师:黄小菲3112041006系统工程2038班蔡忠闽20XX年11月22日目录1.背景................................................. ................................................... . (1)1.1Rijndael密码的设计标准:............................................... .................................11.2设计思想................................................. ................................................... .......12.系统设计................................................. ................................................... . (2)2.1系统主要目标................................................. ................................................... ..22.2功能模块与系统结构................................................. . (2)2.2.1字节替换subbyte............................................ ...........................................22.2.2行移位shiftRow........................................... ..............................................22.2.3列混合mixcolumn.......................................... ..........................................32.2.4轮密钥加AddRoundKey........................................ .....................................42.2.5逆字节替换................................................. ..............................................42.2. 6逆行移位InvshiftRow........................................ .. (4)2.2.7逆列混淆................................................. .. (4)3加密模式................................................. ................................................... (5)3.1电子密码本ecb模式................................................. ........................................53.2加密块链模式cbc模......................................64系统功能程序设计................................................. ................................................... . (8)4.1基本加密部分................................................. ................................................... ..84.1.1字节替换................................................. ...................................................84.1.2行移位................................................. ................................................... ...84.1.3列混合................................................. ................................................... (9)4.1.4轮密钥加.................................................94.1.5密钥扩展................................................. . (10)4.1.6逆字节替换................................................. ..............................................114.1 .7逆行移位................................................. .. (1)14.1.8逆列混合................................................. . (12)4.1.9加密................................................. ................................................... .....124.1.10解密................................................. ................................................... (13)5实验结果................................................. (14)5.1需要加密文件................................................. .. (1)45.2实验加密解密结果................................................. ...........................................156参考资料................................................. ................................................... . (16)1.背景Aes,密码学中的高级加密标准(Advancedencryptionstandard,Aes),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。
实验报告课程:计算机保密_ _实验名称:数据的加密与解密_ _院系(部):计科院_ _专业班级:计科11001班_ _学号: 201003647_ _实验日期: 2013-4-25_ _姓名: _刘雄 _报告日期: _2013-5-1 _报告评分:教师签字:一. 实验名称数据加密与解密二.运行环境Windows XP系统 IE浏览器三.实验目的熟悉加密解密的处理过程,了解基本的加密解密算法。
尝试编制基本的加密解密程序。
掌握信息认证技术。
四.实验内容及步骤1、安装运行常用的加解密软件。
2、掌握加解密软件的实际运用。
*3、编写凯撒密码实现、维吉尼亚表加密等置换和替换加解密程序。
4、掌握信息认证的方法及完整性认证。
(1)安装运行常用的加解密软件,掌握加解密软件的实际运用任务一:通过安装运行加密解密软件(Apocalypso.exe;RSATool.exe;SWriter.exe等(参见:实验一指导))的实际运用,了解并掌握对称密码体系DES、IDEA、AES等算法,及非对称密码体制RSA等算法实施加密加密的原理及技术。
•DES:加密解密是一种分组加密算法,输入的明文为64位,密钥为56位,生成的密文为64位。
•BlowFish:算法用来加密64Bit长度的字符串或文件和文件夹加密软件。
•Gost(Gosudarstvennyi Standard):算法是一种由前苏联设计的类似DES算法的分组密码算法。
它是一个64位分组及256位密钥的采用32轮简单迭代型加密算法.•IDEA:国际数据加密算法:使用128 位密钥提供非常强的安全性;•Rijndael:是带有可变块长和可变密钥长度的迭代块密码(AES 算法)。
块长和密钥长度可以分别指定成128、192 或256 位。
•MISTY1:它用128位密钥对64位数据进行不确定轮回的加密。
文档分为两部分:密钥产生部分和数据随机化部分。
•Twofish:同Blowfish一样,Twofish使用分组加密机制。
实验五MD5加密解密一.MD5生成文件摘要(1)本机进入“密码工具”|“加密解密”|“MD5哈希函数”|“生成摘要”页签,在明文框中编辑文本内容: ghgfnd4eh56t78udfnhgfdghgfdhqa3mkjhagawfftefg 。
单击“生成摘要”按钮,生成文本摘要:单击“导出”按钮,将摘要导出到MD5共享文件夹(D:\Work\Encryption\MD5\)中,并通告同组主机获取摘要。
(2)单击“导入摘要”按钮,从同组主机的MD5共享文件夹中将摘要导入。
在文本框中输入同组主机编辑过的文本内容,单击“生成摘要”按钮,将新生成的摘要与导入的摘要进行比较,验证相同文本会产生相同的摘要。
(3)对同组主机编辑过的文本内容做很小的改动,再次生成摘要,与导入的摘要进行对比,验证MD5算法的抗修改性。
二.MD5算法本机进入“密码工具”|“加密解密”|“MD5哈希函数”|“演示”页签,在明文输入区输入文本(文本不能超过48个字符),单击“开始演示”,查看各模块数据及算法流程。
(1)明文:fhgfhgftyfhgftdfhgsdhj54654fghfghfghfgh(2)摘要演示过程:三.源码应用(选做)设计MD5文件校验工具,利用MD5算法计算文件摘要。
单击工具栏“VC6”按钮,启动VC++6.0。
选择“File”|“Open Workspace…”加载程文件“C:\ExpNIS\Encrypt-Lab\Projects\MD5\MD5.dsw”。
基于此工程进行程序设计。
程序代码如下:(只实现了加密的功能解密具体没有实现)#include <string.h>#include <stdlib.h>#include "md5.h"//! 文件最大2M#define MAX_FILE 1024*1024*2/*******************/// 名称:usage// 功能:帮助信息// 参数:应用程序名称// 返回:无/**********/void Usage( const char *appname )printf( "\n\tusage: md5 文件\n" );}/********/// 名称:CheckParse// 功能:校验应用程序入口参数// 参数:argc等于main主函数argc参数,argv指向main主函数argv参数// 返回:若参数合法返回true,否则返回false// 备注:简单的入口参数校验/*********/bool CheckParse( int argc, char** argv ){if( argc != 2 ){Usage( argv[0] );return false;}return true;}unsigned A,B,C,D,a,b,c,d,i,len,flen[2],x[16]; //i临时变量,len文件长,flen[2]为64位二进制表示的文件初始长度char filename[200]; //文件名FILE *fp;char MD5[32];//用于清除回车键缓存的影响void safe_flush(FILE *fp){int ch;while( (ch = fgetc(fp)) != EOF && ch != '\n' );}void dealy(){for(int time=0;time<=366666666;time++){if(time == 366666666){system("cls");}}void main(){printf("\n\n\n\n\n\t*****************题目:MD5加密工具****************\n\n");printf("\n\t*****************作者:徐刘根谢燕******************\n\n");printf("\n\t*****************指导老师:张恒汝********************\n\n");printf("\n\t*****************日期:2014-6-16********************\n\n");printf("\n\n\n\n\t\t\t3秒后自动跳转......");dealy();printf("\n\n\t******************************************************\n \n");printf("\t 加密请输入:1 退出请输入:2\n\n");printf("\t******************************************************\n");int temp;scanf("%d",&temp);safe_flush(stdin);if(temp == 2){printf("感谢使用加密解密程序!\n");}else if(temp == 1){printf("请输入你的文件名:");gets(filename);if(!(fp=fopen(filename,"rb"))){printf("无法打开你的文件!\n");}if(filename[0]==34)filename[strlen(filename)-1]=0,strcpy(filename,filename+1);fseek(fp, 0, SEEK_END);len=ftell(fp);rewind(fp);A=0x67452301,B=0xefcdab89,C=0x98badcfe,D=0x10325476;flen[1]=len/0x20000000;flen[0]=(len%0x20000000)*8;memset(x,0,64);fread(&x,4,16,fp);for(i=0;i<len/64;i++){md5();memset(x,0,64);fread(&x,4,16,fp);}((char*)x)[len%64]=128;if(len%64>55) md5(),memset(x,0,64);memcpy(x+14,flen,8); //文件末尾加入原文件的bit长度md5();fclose(fp);sprintf(MD5,"%08X%08X%08X%08X",PP(A),PP(B),PP(C),PP(D));printf("经过MD5加密后的内容为:");printf("MD5 Code:%s\n",MD5);}else{printf("请输入一个正确的选择!");}}运行结果:。
一、实训目的本次实训旨在通过实际操作,加深对加密和解码原理的理解,提高对加密算法的应用能力,并培养在实际工作中运用加密技术保护信息安全的能力。
通过实训,学生能够: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等加密算法的原理和应用。
实验五数据加密与解密实验(3学时)一、实验目的1、了解OPENSSL开放源程序的应用;2、熟悉用对称加密的方法加密和解密。
3、熟悉利用RSA非对称密钥对文件进行加密与解密的整个过程方法。
二、实验设备及软件环境(一)实验设备服务器、交换机和PC机组成NT网络。
(二)软件环境1.服务器采用Microsoft Windows 2003 Server 操作系统;2.学生客户端采用Windows XP系统、IE6.0以上浏览器。
3.OPENSSL开放源程序三、实验内容与步骤(整个实验共分五个部分)(一)准备工作步骤一下载OPENSSL安装包到C盘根目录下。
(下载地址:/openssl.rar)步骤二在C盘中右击压缩包,使用“解压到openssl\”方式来解压软件包,在C盘根目录下,自动生成OPENSSL文件夹。
步骤三点击“开始”、“程序”、“附件”、“命令提示符”,打开“命令提示符”窗口。
如图8-1。
图8-1 命令提示符步骤四在“C:\Documents and Settingsowner>”键入cd c:\openssl\out32dll,输入后按回车键,进入到openssl\out32dll的目录下,如图8-2所示。
(命令的含义:打开C盘目录下,openssl文件夹下的out32dll文件夹)图8-2 openssl\out32dll的目录(二)对称加密实验步骤步骤一用记事本创建一个文本文件,文件名为学生的学号(如026h321f.txt),内容为学生的名字和学号,保存在c:\openssl\out32dll的文件夹下,如图9-1所示。
图9-1用记事本创建的文本文件步骤二输入命令“openssl enc -des3 -in 026h231f.txt -out out026h231f.des”(注意所有的-符号的前面都有一个空格),输入后按回车键,加密过程中会提示你输入保护密码,按回车键后会再输一次密码进行确认,(注:输入密码时屏幕无任何显示)执行结果如图9-2所示。
执行完上述命令完后,在c:\openssl\out32dll目录下会自动生成一个用des3算法加密后out026h231f.des的文件。
(命令的含义:使用DES3算法对数据进行对称加密。
-in filename 要进行加密的输入文件名,即明文文件-out filename 加密后得到的文件名,即密文文件)图9-2 输入密码后的执行结果步骤三用“type out026h231f.des”命令查看加密后的out026h231f.des文件的内容,如图9-3所示。
图9-3加密后的文件步骤四用“openssl enc -des3 -d -in out026h231f.des -out new026h231f.txt” (注意所有的-符号的前面都有一个空格)命令对out026h231f.des文件内容进行解码(注:这里需要输入原先设定的保护密码),如图9-4所示。
(命令的含义:使用DES3算法对数据进行对称解密,使用加密时用到的对称密钥进行。
-in filename 要进行解密的输入文件名,即密文文件-out filename 解密后得到的文件名,即还原的明文文件)图9-4对out026h231f.des文件内容进行解码步骤五输入type new026h231f.txt命令查看解密后的文件内容,如图9-5所示。
判别是不是与源文件026h231f.txt的内容一致。
图9-5 判别与源文件内容的一致性(三)非对称加密实验步骤步骤一用记事本创建一个文本文件,文件名为学生的学号(如026h321f.txt),内容为学生的名字和学号,保存在c:\openssl\out32dll的文件夹下,如图10-1所示。
图10-1用记事本创建的文本文件步骤二产生一个私钥。
具体的操作步骤如下:输入命令“openssl genrsa -des3-out myrsaCA.key 1024” (注意所有的-符号的前面都有一个空格,另外“1024”前面有空格),输入后按回车键,出现如图10-2所示的等待提示页面,提示你输入保护密码,按回车键后会再输一次密码进行确认(注:输入密码时屏幕无任何显示)。
执行完上述命令完后,在c:\ openssl\out32dll目录下会自动生成一个用于存放rsa私钥的文件myrsaCA.key。
(命令的含义:genrsa指令生成RSA私有密钥,并使用DES3加密算法来加密密钥,通过输入保护密码。
myrsaCA.key 是私有密钥输入文件名;1024是产生的参数的长度,必须是本指令的最后一个参数,如果没有指明,则产生512bit长的参数)图10-2用于存放私钥的文件步骤三查看私钥内容。
在如图10-2所示页面,输入“openssl rsa -in myrsaCA.key -text -noout”(注意所有的-符号的前面都有一个空格)命令,然后根据提示输入先前设定的保护密码,查看私有密钥文件中的私钥内容,如图10-3所示。
(命令的含义:rsa指令专门处理RSA密钥。
-in filename 要分析的文件名称,如果文件有密码保护,会要你输入;-text 打印出私有密钥的各个组成部分;-noout 不打印出key的编码版本信息)图10-3 查看私有密钥文件中的私钥内容步骤四导出公共密钥,输入命令:openssl rsa -in myrsaCA.key -pubout -out myrsapubkey.pem(注:需输入原先设定的保护密码)(注意所有的-符号的前面都有一个空格),产生一个存放共钥myrsapubkey.pem文件,如图10-4所示。
(命令的含义:rsa指令专门处理RSA密钥。
-out filename 要输出的文件名;-pubin 缺省来说是从输入文件中读到私有密钥,有这个选项则可以从输入文件中去读公共密钥;-pubout 缺省来说是打印出私有密钥,有这个选项就可以打印出公共密钥。
)图10-4存放公钥的文件步骤五查看公钥内容。
在如图10-4所示页面中,输入“type myrsapubkey.pem”命令查看文件“myrsapubkey.pem”中的公钥内容,如图10-5所示。
图10-5 查看文件中的公钥内容2. 用公钥对文件加密和用私钥对文件解密步骤一用公钥对文件加密。
在如图8-2所示页面,输入命令“openssl rsautl -encrypt -in 026h231f.txt -inkey myrsaCA.key -out pub026h231f.enc” (注意所有的-符号的前面都有一个空格)后,如图10-6所示,根据提示输入保护密码,敲入回车键完成加密(自己尝试查看加密后的文件,命令为“type pub026h231f.enc”)。
(命令的含义:rsautl指令能够使用使用RSA算法签名,验证身份,加密和解密数据。
-in filename 指定输入文件名;-out filename 指定输出文件名;-inkey filename 指定私有密钥文件,格式必须是RSA私有密钥文件;-pubin 指定公共密钥文件-sign 给输入的数据签名,需要用到私有密钥文件-verify 对输入的数据进行验证-encrype 用公共密钥对输入的数据进行加密-decrypt 用RSA的私有密钥对输入的数据进行解密)图10-6加密后的文件步骤二用私钥对加密文件解密。
在如图8-2所示页面中,输入命令“openssl rsautl-decrypt -in pub026h231f.enc -inkey myrsaCA.key -out newpub026h231f.txt” (注意所有的-符号的前面都有一个空格)后,根据提示输入原先设定的保护密码,出现如图10-7页面。
(命令的含义:rsautl指令能够使用使用RSA算法签名,验证身份,加密和解密数据。
-in filename 指定输入文件名;-out filename 指定输出文件名;-inkey filename 指定私有密钥文件,格式必须是RSA私有密钥文件;-decrypt 用RSA的私有密钥对输入的数据进行解密)图10-7用私钥对文件解密步骤三查看解密后的newpub026h231f.txt文件的内容,命令“typenewpub026h231f.txt”。
如图10-8所示。
判别是不是与源文件026h231f.txt的内容一致。
图10-8判别与源文件内容的一致性3. 用私钥对文件加密和用公钥对文件解密(提示:类似签名过程)步骤一用私钥对026h231f.txt文件加密。
在如图8-2所示页面中,输入命令“openssl rsautl -sign -in 026h231f.txt -inkey myrsaCA.key -out pri026h231f.enc” (注意所有的-符号的前面都有一个空格),然后按回车键,出现如图10-9所示的页面(注:文件026h231f.txt不能太大,大了就会出错),然后输入原先设定的保护密码,完成对文件的加密。
(命令的含义:rsautl指令能够使用使用RSA算法签名,验证身份,加密和解密数据。
-in filename 指定输入文件名;-out filename 指定输出文件名;-inkey filename 指定私有密钥文件,格式必须是RSA私有密钥文件;-pubin 指定公共密钥文件-sign 给输入的数据签名,需要用到私有密钥文件)图10-9 命令提示符步骤二用公钥对026h231f.tx文件解密(提示:类似对签名进行验证),命令为“openssl rsautl -verify -in pri026h231f.enc -inkey myrsaCA.key -out newpri026h231f.txt”(注意所有的-符号的前面都有一个空格),输完按回车键,出现如图10-10所示的页面 (注:需输入原先设定的保护密码)(命令的含义:rsautl指令能够使用使用RSA算法签名,验证身份,加密和解密数据。
-in filename 指定输入文件名;-out filename 指定输出文件名;-verify 对输入的数据进行验证图10-10用公钥解密文件步骤三查看解密后的newpri026h231f.txt文件的内容。
在如图10-10所示页面中,输入命令“type newpri026h231f.txt”,回车后便可查看文件的内容,然后判别是不是与源文件026h231f.txt的内容一致。
(四)搜索《中华人民共和国电子签名法》,通过阅读熟悉该电子签名法的主要内容,每个部分内容都解决了什么问题。
(五)搜索《中国互联网络信息中心域名争议解决办法》,阅读并熟悉其主要内容。