Openssl加密和解密.ppt

上传人:tia****nde 文档编号:11497371 上传时间:2020-04-25 格式:PPT 页数:20 大小:285.50KB
返回 下载 相关 举报
Openssl加密和解密.ppt_第1页
第1页 / 共20页
Openssl加密和解密.ppt_第2页
第2页 / 共20页
Openssl加密和解密.ppt_第3页
第3页 / 共20页
点击查看更多>>
资源描述
第七章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通信的服务器和客户端。该部分在windows编译后,文件名为:ssleay32.lib。密码算法库支持的算法:8种对称算法、4种公开密钥算法、5种信息摘要算法。应用程序部分基于密码算法库和ssl协议库,实现了很多实用的范例性应用程序,覆盖了众多密码学应用。包括:各种算法的加密程序,各种类型密钥的产生程序,证书签发和验证程序、ssl连接测试程序、其他的标准应用程序。,二、openssl下载与编译,Windows下编译opensslWindows下搭建openssl开发环境,二、openssl下载与编译,编译步骤:1、访问http:/www.openssl.org/source/下载2、解压缩openssl-0.9.8e.tar.gz3、下载perl地址,Windows下编译opensslWindows下编译openssl需要如下环境:openssl源码、perlforwin32、c编译器(vc+、borlanc等),二、openssl下载与编译,编译步骤:7、运行“msdo_ms”8、运行”nmake-fmsntdll.mak”,执行make进行编译。该命令将openssl编译成动态库,如果想编译成静态库应使用命令“nmakefmsnt.mak”9、运行”nmake-fmsntdll.maktest”,检查上一步编译是否成功。10、运行运行”nmake-fmsntdll.makinstall”,本步骤讲安装编译后的openssl到制定目录。11、查看安装结果。打开c:openssl-0.9.8e目录将看到binincludelib三个文件夹。12、编译完成。,Windows下编译opensslWindows下编译openssl需要如下环境:openssl源码、perlforwin32、c编译器(vc+、borlanc等),编译完成后,基于它的应用有openssl指令和openssl接口开发两种。Openssl指令能做很多事情,比如证书请求、签发证书、解析证书。但开发者利用openssl接口完成自己的需求,会更加灵活。,二、openssl下载与编译,三、Openssl加密和解密,Openssl加密和解密函数包含在密码算法库libeay32.lib中。提供的对称加密算法包括des,aes,rc2,rc4,分别声明在“C:opensslincludeopenssl”目录下的des.h,aes.h,rc2.h,rc4.h中.调用算法对应的头文件实现不同算法。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_cipher_ctx_init函数功能:初始化一个evp_cipher_ctx结构体。只有调用该函数初始化后evp_cipher_ctx结构体才能在其他函数中调用。函数定义:Voidevp_cipher_ctx_init(evp_cipher_ctx*a),三、Openssl加密和解密,一、函数介绍2、加密初始化函数evp_encryptlnit_ex函数功能:加密初始化,设置密码算法、加密引擎、密钥、初始化向量等参数。函数定义:intevp_encrypinit_ex(evp_cipher_ctx*ctx,constevp_cipher*cipher,engine*inpl,constunsignedchar*key,constunsignedchar*iv);注意:调用该函数时注意给key、iv参数分配空间,key和iv的长度由算法决定,如des算法key和iv为8字节;3des算法key为24字节,iv为8字节。,三、Openssl加密和解密,一、函数介绍3、数据加密函数evp_encryptupdate函数功能:数据加密。函数定义:intevp_encryptupdate(evp_cipher_ctx*ctx,unsignedchar*out,int*out1,constunsignedchar*in,intin1);返回值:如果调用成功则返回1,否则返回0;,三、Openssl加密和解密,一、函数介绍4、数据加密结束函数evp_encryptfinal_ex函数功能:数据加密结束。输出最后剩余的密文。函数定义:intevp_encryptfinal_ex(evp_cipher_ctx*ctx,unsignedchar*out,int*out1);返回值:如果调用成功则返回1,否则返回0;,三、Openssl加密和解密,一、函数介绍5、解密初始化函数evp_decryptinit_ex函数功能:解密初始化,设置密码算法、加密引擎、密钥、初始化向量等参数。函数定义:intevp_decryptinit_ex(evp_cipher_ctx*ctx,constevp_cipher*cipher,engine*impl,constunsignedchar*key,constunsignedchar*iv);返回值:如果调用成功则返回1,否则返回0;,三、Openssl加密和解密,一、函数介绍6、数据解密函数evp_decryptupdate函数功能:数据解密。函数定义:intevp_decryptupdate(evp_cipher_ctx*ctx,unsignedchar*out,int*out1,constunsignedchar*in,intin1);返回值:如果调用成功则返回1,否则返回0;,三、Openssl加密和解密,一、函数介绍7、数据解密函数evp_decryptfinal_ex函数功能:数据解密结束,输出最后剩余的原文。函数定义:intevp_decryptfinal_ex(evp_cipher_ctx*ctx,unsignedchar*outm,intout1);返回值:如果调用成功则返回1,否则返回0;,二、实例应用数据加密了解了加密和解密涉及的函数,下面介绍一下实际开发的步骤。在实际应用中一般通过加密和解密达到信息保密的目的。接下来我们就使用了3DES对称算法对一段数据进行加密。加密后数据将变成无法理解的秘文。,三、Openssl加密和解密,二、实例应用数据加密流程分析:1、定义一些必需的变量,包括密钥、evp算法上下文、输出密文缓冲区等,具体代码如下:Unsignedcharkeyevp_max_key_length;/密钥Unsignedcharivevp_max_key-length;/初始化向量Evp_cipher_ctxctx;/evp算法上下文Unsignedcharout1024;/输出密文缓冲区Intout1;/密文长度Intoutltmp;2、对密钥key和初始化变量iv赋值。Key和iv可以使用户输入的,也可以是随机产生的。对于对称算法,密钥最关键数据安全都是基于密钥的保密。如果双方通信必须通过安全的方式共享密钥。在现代密码学中一般使用非对称算法,利用对方的公钥加密对称密钥,达到安全传输的目的。3、使用EVP_EncryptInit_ex函数初始化密码算法结构体EVP_CIPHER_CTX,这里使用3DES算法。Openssl支持多种对称算法,算法强度、密钥、分组长度不一,可更具实际情况选择对称算法。EVP_EncryptInit_ex(4、使用EVP_Encryptupdate()函数对数据加密。对于不定长数据或大数据可以不断循环调用该函数,直到把数据处理完为止。5、使用EVP_Encryptfinal_ex(&ctx,out,&out1);,流程图,初始化key和iv,初始化密码算法结构体,设置密码算法、密钥、初始化向量,循环调用加密update,直到处理完所有的待加密数据,调用加密结束函数,输出最后的密文,结束,开始,三、Openssl加密和解密,二、实例应用数据加密1、filenew2、projectswin32consoleapplicationprojectname(evp_encrypt)3、添加源文件,filenew-files(main.c)4、在main.c中添加代码5、添加链接库libeay32.lib,projectsettings命令,link-object/librarymodules文本框添加libeay32.lib。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!