基于OpenSSL库的加解密实验
2017-06-22 11:21
169 查看
Openssl库的下载、编译和配置过程,
程序内容要求:基于openssl库实现对称密码算法des/aes的加解密操作(注意分组密码的工作方式)和非对称密码rsa的加解密操作。明文请选择自己的学号+姓名。程序的输出结果包括:输入的明文,加密后生成密文输出,解密结果再次输出。
操作环境:windows7+minGW+codeblocks
一. 下载并安装MinGW - 20120426.exe
1.下载MinGW - 20120426.exe
百度直接搜索“mingw-get-inst-20120426.exe”
2.安装MinGW - 20120426.exe
![](https://img-blog.csdn.net/20170622105801180?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amluZ181NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20170622105817140?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amluZ181NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20170622105829523?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amluZ181NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20170622105842229?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amluZ181NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20170622105903726?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amluZ181NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20170622105914200?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amluZ181NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20170622105926977?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amluZ181NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20170622105943033?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amluZ181NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20170622105955165?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amluZ181NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
安装成功
![](https://img-blog.csdn.net/20170622110027799?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amluZ181NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
3)配置MinGW的环境变量
![](https://img-blog.csdn.net/20170622110107229?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amluZ181NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20170622110119635?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amluZ181NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20170622110135614?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amluZ181NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
二、安装OpenSSL库
1、下载
百度搜索“openssl-1.0.0e.tar.gz”,下载后直接解压。
2、安装OpenSSL-1.0.0e
1)打开D/MinGW/msys/1.0/msys.dat文件,输入以下命令,发现,Perl 5不存在,故接下来安装Perl 5
![](https://img-blog.csdn.net/20170622110252130?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amluZ181NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
3、安装Perl 5
1)下载Perl 5
![](https://img-blog.csdn.net/20170622110328757?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amluZ181NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20170622110339517?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amluZ181NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
2)安装Perl 5
![](https://img-blog.csdn.net/20170622110422794?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amluZ181NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20170622110435197?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amluZ181NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20170622110449465?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amluZ181NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
安装完成。
3)重新打开D/MinGW/msys/1.0/msys.dat文件,输入以下命令。
![](https://img-blog.csdn.net/20170622110535369?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amluZ181NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
以下图片说明安装完成,继续进行下面的操作。
![](https://img-blog.csdn.net/20170622110601190?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amluZ181NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
4、进行进一步操作
1)输入命令$ make,出现以下图片说明成功
![](https://img-blog.csdn.net/20170622110628801?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amluZ181NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
2)输入命令$ make install,则OpenSSL-1.0.0e编译完成
![](https://img-blog.csdn.net/20170622110708258?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amluZ181NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
三、codeblocks(这里就不叙述codeblocks的安装过程)上基于openssl库的编程
1)打开codeblocks,Setting-complier-Toolchain executables,修改MinGW路径:
![](https://img-blog.csdn.net/20170622110916441?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amluZ181NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
添加头文件:
![](https://img-blog.csdn.net/20170622110946395?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amluZ181NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
添加链接库路径和链接程序路径:
![](https://img-blog.csdn.net/20170622111013760?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1amluZ181NTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
四、实验结果输出截图
1、运行以下代码(des2.c):
运行截图,则实验完成,
程序内容要求:基于openssl库实现对称密码算法des/aes的加解密操作(注意分组密码的工作方式)和非对称密码rsa的加解密操作。明文请选择自己的学号+姓名。程序的输出结果包括:输入的明文,加密后生成密文输出,解密结果再次输出。
操作环境:windows7+minGW+codeblocks
一. 下载并安装MinGW - 20120426.exe
1.下载MinGW - 20120426.exe
百度直接搜索“mingw-get-inst-20120426.exe”
2.安装MinGW - 20120426.exe
安装成功
3)配置MinGW的环境变量
二、安装OpenSSL库
1、下载
百度搜索“openssl-1.0.0e.tar.gz”,下载后直接解压。
2、安装OpenSSL-1.0.0e
1)打开D/MinGW/msys/1.0/msys.dat文件,输入以下命令,发现,Perl 5不存在,故接下来安装Perl 5
3、安装Perl 5
1)下载Perl 5
2)安装Perl 5
安装完成。
3)重新打开D/MinGW/msys/1.0/msys.dat文件,输入以下命令。
以下图片说明安装完成,继续进行下面的操作。
4、进行进一步操作
1)输入命令$ make,出现以下图片说明成功
2)输入命令$ make install,则OpenSSL-1.0.0e编译完成
三、codeblocks(这里就不叙述codeblocks的安装过程)上基于openssl库的编程
1)打开codeblocks,Setting-complier-Toolchain executables,修改MinGW路径:
添加头文件:
添加链接库路径和链接程序路径:
四、实验结果输出截图
1、运行以下代码(des2.c):
#include <openssl/des.h> #include <stdio.h> #include <string. 4000 h> int main(int argc, char** argv) { unsigned char *keystring = "this is my key"; DES_cblock key; DES_key_schedule key_schedule; #if 1 //生成一个 key DES_string_to_key(keystring, &key); if (DES_set_key_checked(&key, &key_schedule) != 0) { printf("convert to key_schedule failed.\n"); return -1; } #else //生成一个key,但不检查key memcpy(key, "password", 8); DES_set_key_unchecked(&key, &key_schedule); #endif //需要加密的字符串 unsigned char input[] = "姓名2015011111"; printf("明文:"); printf("%s\n",input); // printf("\n"); //输出要加密的原文 size_t len = (sizeof(input)+7)/8 * 8; unsigned char *output = malloc(len+1); //IV DES_cblock ivec; //IV设置为0x0000000000000000 memset((char*)&ivec, 0, sizeof(ivec)); //加密 DES_cbc_encrypt(input, output, sizeof(input), &key_schedule, &ivec, DES_ENCRYPT); //输出加密以后的内容 int i; printf("密码:"); for (i = 0; i < len; ++i) printf("%02x", output[i]); printf("\n"); // printf("\n"); memset((char*)&ivec, 0, sizeof(ivec)); //解密 DES_cbc_encrypt(output, input, len, &key_schedule, &ivec, 0); //输出解密后的文字 printf("解密后:"); printf("%s\n", input); free(output); return EXIT_SUCCESS; }
运行截图,则实验完成,
相关文章推荐
- 加密解密原理和基于Openssl构建自有CA
- 基于openssl的AES加解密 android
- iOS基于openssl 的AES-128-cbc-pkcs5 加解密
- php7实现基于openssl的加密解密方法
- iOS基于openssl的RSA公钥加解密
- 基于openssl的RSA加解密实现
- linux网络数据传输的加密,解密以及基于openssl的私有CA的建立
- php基于openssl的rsa加密解密示例
- C语言:基于OpenSSL-RSA实现RSA非对称加解密
- ios客户端RSA公钥加密 .net后台私钥解密解决方案(基于Openssl)
- php实现基于openssl的加密解密方法
- 基于CentOS 6.5 加密、解密、openssl的基本应用及CA的实现过程
- 用openssl库RSA加密解密
- Java OpenSSL生成的RSA公私钥进行数据加解密详细介绍
- 利用openssl进行BASE64编码解码、md5/sha1摘要、AES/DES3加密解密
- 基于XV6操作系统实验平台建设和哈工大操作系统实验 的搭建实验环境
- linux键盘IO探究和实验[基于哈工大操作系统实验]
- 基于openssl的https服务配置
- 基于Spark的逻辑回归实验
- 基于keepalived双主高可用复制搭建实验