Openssl_加密和解密

上传人:飞*** 文档编号:54588609 上传时间:2018-09-15 格式:PPT 页数:20 大小:285.50KB
返回 下载 相关 举报
Openssl_加密和解密_第1页
第1页 / 共20页
Openssl_加密和解密_第2页
第2页 / 共20页
Openssl_加密和解密_第3页
第3页 / 共20页
Openssl_加密和解密_第4页
第4页 / 共20页
Openssl_加密和解密_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《Openssl_加密和解密》由会员分享,可在线阅读,更多相关《Openssl_加密和解密(20页珍藏版)》请在金锄头文库上搜索。

1、第七章 Openssl 加密和解密,一、Openssl概述,Openssl实现了ssl/tls协议,采用c语言开发,支持windows/linux/unix等常见操作系统。 Openssl当前版本为0.9.8e,完全实现了对sslv1、 sslv2、 sslv3、 tls的支持。 Openssl的源代码库可以从Openssl的官方网站www.openssl.org自由下载。 Openssl包括3部分:ssl协议、密码算法库和应用程序。密码算法库是基础,应用程序把密码算法库和ssl协议应用于实际开发中,也是丰富的Openssl指令集。,一、Openssl概述,Ssl协议利用该库可以建立一个ssl

2、通信的服务器和客户端。该部分在windows编译后,文件名为:ssleay32.lib。 密码算法库支持的算法:8种对称算法、4种公开密钥算法、5种信息摘要算法。 应用程序部分基于密码算法库和ssl协议库,实现了很多实用的范例性应用程序,覆盖了众多密码学应用。包括:各种算法的加密程序,各种类型密钥的产生程序,证书签发和验证程序、ssl连接测试程序、其他的标准应用程序。,二、openssl下载与编译,Windows下编译openssl Windows下搭建openssl开发环境,二、openssl下载与编译,编译步骤: 1、访问http:/www.openssl.org/source/下载 2、

3、解压缩openssl-0.9.8e.tar.gz 3、下载perl 地址http:/ 4、安装perl 5、运行cmd命令,在控制台窗口,用cd命令改变当前目录的openssl-0.9.8e源码所在目录 6、执行configure,运行”perl Configure VC-WIN32 prefix=c:/openssl-0.9.8e”,Windows下编译opensslWindows下编译openssl需要如下环境:openssl源码、perl for win32、c编译器(vc+、borlan c等),二、openssl下载与编译,编译步骤: 7、运行“msdo_ms” 8、运行”nmake

4、-f msntdll.mak”,执行make进行编译。该命令将openssl编译成动态库,如果想编译成静态库应使用命令“nmake f msnt.mak ” 9、运行”nmake-f msntdll.mak test”,检查上一步编译是否成功。 10、运行运行”nmake-f msntdll.mak install”, 本步骤讲安装编译后的openssl到制定目录。 11、查看安装结果。打开c:openssl-0.9.8e目录将看到binincludelib三个文件夹。 12、编译完成。,Windows下编译opensslWindows下编译openssl需要如下环境:openssl源码、pe

5、rl for win32、c编译器(vc+、borlan c等),编译完成后,基于它的应用有openssl指令和openssl接口开发两种。Openssl指令能做很多事情,比如证书请求、签发证书、解析证书。但开发者利用openssl接口完成自己的需求,会更加灵活。,二、openssl下载与编译,三、Openssl 加密和解密,Openssl 加密和解密函数包含在密码算法库libeay32.lib中。提供的对称加密算法包括des,aes,rc2,rc4,分别声明在“C:opensslincludeopenssl”目录下的des.h,aes.h,rc2.h,rc4.h中.调用算法对应的头文件实现不

6、同算法。Openssl为了调用方便,把这些算法都封装在evp.h文件中。接下来就直接利用evp.h加密和解密算法实现对数据的对称加密和解密,来保证数据保密性。,三、Openssl 加密和解密,一、函数介绍 在Openssl 加密和解密的开发中, 加密函数为:evp_encryptinit_exevp_encryptupdateevp_encryptfinal_ex 解密函数为:evp_decryptinit_exevp_decryptupdate_exevp_encryptfinal_ex 它们均定义在evp.h中。,三、Openssl 加密和解密,一、函数介绍 1、初始化函数evp_ciph

7、er_ctx_init 函数功能:初始化一个evp_cipher_ctx结构体。只有调用该函数初始化后evp_cipher_ctx结构体才能在其他函数中调用。 函数定义: Void evp_cipher_ctx_init(evp_cipher_ctx *a),三、Openssl 加密和解密,一、函数介绍 2、加密初始化函数evp_encryptlnit_ex 函数功能:加密初始化,设置密码算法、加密引擎、密钥、初始化向量等参数。 函数定义: int evp_encrypinit_ex(evp_cipher_ctx*ctx,const evp_cipher*cipher,engine *inpl

8、,const unsigned char*key,const unsigned char*iv); 注意:调用该函数时注意给key、iv参数分配空间,key和iv的长度由算法决定,如des算法key和iv为8字节;3des算法key为24字节,iv为8字节。,三、Openssl 加密和解密,一、函数介绍 3、数据加密函数evp_encryptupdate 函数功能:数据加密。 函数定义: int evp_encryptupdate(evp_cipher_ctx*ctx, unsigned char*out,int*out1,const unsigned char*in,int in1); 返回

9、值:如果调用成功则返回1,否则返回0;,三、Openssl 加密和解密,一、函数介绍 4、数据加密结束函数evp_encryptfinal_ex 函数功能:数据加密结束。输出最后剩余的密文。 函数定义: int evp_encryptfinal_ex(evp_cipher_ctx*ctx, unsigned char*out,int*out1); 返回值:如果调用成功则返回1,否则返回0;,三、Openssl 加密和解密,一、函数介绍 5、解密初始化函数evp_decryptinit_ex 函数功能:解密初始化,设置密码算法、加密引擎、密钥、初始化向量等参数。 函数定义: int evp_de

10、cryptinit_ex(evp_cipher_ctx*ctx, const evp_cipher*cipher,engine*impl,const unsigned char*key,const unsigned char *iv); 返回值:如果调用成功则返回1,否则返回0;,三、Openssl 加密和解密,一、函数介绍 6、数据解密函数evp_decryptupdate 函数功能:数据解密。 函数定义: int evp_decryptupdate(evp_cipher_ctx*ctx, unsigned char*out,int *out1,const unsigned char *in

11、,int in1); 返回值:如果调用成功则返回1,否则返回0;,三、Openssl 加密和解密,一、函数介绍 7、数据解密函数evp_decryptfinal_ex 函数功能:数据解密结束,输出最后剩余的原文。 函数定义: int evp_decryptfinal_ex(evp_cipher_ctx*ctx, unsigned char*outm, int out1); 返回值:如果调用成功则返回1,否则返回0;,二、实例应用数据加密了解了加密和解密涉及的函数,下面介绍一下实际开发的步骤。在实际应用中一般通过加密和解密达到信息保密的目的。接下来我们就使用了3DES对称算法对一段数据进行加密。

12、加密后数据将变成无法理解的秘文。,三、Openssl 加密和解密,二、实例应用数据加密 流程分析: 1、定义一些必需的变量,包括密钥、evp算法上下文、输出密文缓冲区等,具体代码如下: Unsigned char keyevp_max_key_length;/密钥 Unsigned char ivevp_max_key-length;/初始化向量 Evp_cipher_ctx ctx;/evp算法上下文 Unsigned char out1024;/输出密文缓冲区 Int out1;/密文长度 Int outltmp; 2、对密钥key和初始化变量iv赋值。Key和iv可以使用户输入的,也可以

13、是随机产生的。对于对称算法,密钥最关键数据安全都是基于密钥的保密。如果双方通信必须通过安全的方式共享密钥。在现代密码学中一般使用非对称算法,利用对方的公钥加密对称密钥,达到安全传输的目的。 3、使用EVP_EncryptInit_ex函数初始化密码算法结构体EVP_CIPHER_CTX,这里使用3DES算法。Openssl支持多种对称算法,算法强度、密钥、分组长度不一,可更具实际情况选择对称算法。 EVP_EncryptInit_ex( 4、使用EVP_Encryptupdate()函数对数据加密。对于不定长数据或大数据可以不断循环调用该函数,直到把数据处理完为止。 5、使用EVP_Encry

14、ptfinal_ex(&ctx,out,&out1);,流程图,初始化key和iv,初始化密码算法结构体, 设置密码算法、密钥、 初始化向量,循环调用加密update,直 到处理完所有的待加密 数据,调用加密结束函数,输出 最后的密文,结束,开始,三、Openssl 加密和解密,二、实例应用数据加密 1、filenew 2、projectswin32console applicationproject name(evp_encrypt) 3、添加源文件,filenew-files(main.c) 4、在main.c中添加代码 5、添加链接库libeay32.lib,projectsettings命令,link-object/library modules文本框添加libeay32.lib。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号