嵌入式 Open SSL 常用函数——加解密及摘要

原创 2013年12月02日 14:45:52

要看OpenSSL了.作为研究的第一个开源代码, 没有多大的头绪.就先通过书《PKI网络安全论证技术与编程实现》来熟悉一下OpenSSL的基本应用。这里把它讲到的函数列出来。为下一步研究作了准备。

   一、OpenSSL加密和解密

     1、首先初始化EVP算法上下文

        voidEVP_CIPHER_CTX_init(EVP_CIPHER_CTX *a)

        函数功能:初始化一个EVP_CIPHER_CTX结构体。这个结构体将在算法中的其它函数中调用。

        参数说明:[IN]EVP_CIPHER_CTX结构体,密码算法上下文关系句柄。用于保存密码算法、密码算法引擎、加密或解密的标志位、初始初始化向量、当前初始化向量等信息。

      2、加解密初始化函数

            intEVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,ENGINE *imp1, const unsigned char *key, const unsigned char*iv);  

             intEVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,ENGINE *imp1, const unsigned char *key, const unsigned char*iv);  

           函数功能:加解密初始化,设置密码算法、加密引擎、密钥、初始化向量等参数。

            参数constEVP_CIPHER *cipher :表示加解密使用的密码算法

 

const EVP_CIPHER *EVP_enc_null(void)
const EVP_CIPHER *EVP_des_ecb(void)
const EVP_CIPHER *EVP_rc4(void)
const EVP_CIPHER *EVP_idea_cbc(void)
const EVP_CIPHER *EVP_aes_128_ecb(void)
const EVP_CIPHER *EVP_aes_192_cbc(void)
const EVP_CIPHER *EVP_aes_256_ecb(void)
const EVP_CIPHER *EVP_des_ede3cbc(void)

 

        返回值:成功返回1,否则返回0

    3、数据加解密Update函数

        intEVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int*out1, const unsigned char *in, int in1);

        intEVP_DeyptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *out1,const unsigned char *in, int in1);

        功能:数据加解密

        参数:[OUT]out,输出数据指针。[OUT]out1输出数据长度

         返回值:1成功,0失败

    4、数据加解密结束函数

        intEVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int*out1);

        intEVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int*out1);

功能:数据加密结束,输出最后剩余的密(加密)/明(解密)文。

    5、释放内存。

    intEVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *a);

 

    二、OpenSSL消息摘要

        消息摘要就是把不定长的数据通过数学变换转化为固定长度的短数据。不可逆。

    1、初始化函数

        voidEVP_MD_CTX_init(EVP_MD_CTX *ctx);

    功能:初始化EVP_MD_CTX结构体

    2、设置摘要算法函数

        intEVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE*imp1);

    功能:摘要初始化,设置摘要算法、摘要算法引擎。

    参数:type[IN]计算摘要使用的算法。

 

const EVP_MD *EVP_md2(void)
const EVP_MD *EVP_md4(void)
const EVP_MD *EVP_md5(void)
const EVP_MD *EVP_sha(void);
const EVP_MD *EVP_sha1(void);
const EVP_MD *EVP_dss(void);
const EVP_MD *EVP_mdc2(void);
const EVP_MD *EVP_ripemd160(voi)

 

    3、摘要Update函数

        intEvP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, size_t cnt);

    功能:计算数据摘要。此函数可以被调用多次,适用于计算大段数据的摘要。

    4、摘要结束函数

        intEVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int*s);

    功能:结束计算摘要,输出摘要值。

    5、一次性计算摘要函数

        intEVP_Digest(const void *data, size_t count, unsigned char *md,unsigned int *size, const EVP_MD *type, ENGINE *imp1);

    6、清除摘要算法结构体EVP_MD_CTX,释放内存函数

        int EVP_MD_CTX_cleanup(EVP_MD_CTX*ctx);

Java安全(加密、摘要、签名、证书、SSL、HTTPS)

对于一般的开发人员来说,很少需要对安全领域内的基础技术进行深入的研究,但是鉴于日常系统开发中遇到的各种安全相关的问题,熟悉和了解这些安全技术的基本原理和使用场景还是非常必要的。本文将对非对称加密、数字...
  • shimiso
  • shimiso
  • 2013年01月06日 12:31
  • 10573

对称、非对称加密算法、消息摘要算法、数字证书详解

消息摘要算法 消息摘要算法包括MD(Message Digest 消息摘要算法),SHA(Secure Hash Agorithm 安全散列算法),MAC(Message Authenticat...
  • woshichengchaoa
  • woshichengchaoa
  • 2014年01月14日 09:52
  • 3952

Java 加密解密之消息摘要算法(MD5 SHA MAC)

博客分类: Java Javajava md5java shajava mac Java 加密解密基础 Java byte数组与十六进制字符串互转 Java BASE64加密解密 Java ...
  • aubdiy
  • aubdiy
  • 2016年05月27日 23:28
  • 1767

嵌入式 OpenSSL 常用函数——SSL/TLS编程

SSL/TLS协议已经广泛应用于电子商务中, 用来保证信息传输的安全性。 利用OpenSSL进行了安全套接字编程和普通套接字编程类似。 主要函数 1、  初始化SSL算法库函数 Int SSL_Lib...
  • skdkjxy
  • skdkjxy
  • 2013年12月02日 14:45
  • 710

安全体系(零)—— 加解密算法、消息摘要、消息认证技术、数字签名与公钥证书

本文讲解对称加密、非对称加密、消息摘要、MAC、数字签名、公钥证书的用途、不足和解决的问题。 0.概述   当发送方A向接收方B发送数据时,需要考虑的问题有:   1.数据的安全性。   2....
  • fengyuzhiren
  • fengyuzhiren
  • 2017年03月10日 17:28
  • 387

安全体系(零)—— 加解密算法、消息摘要、消息认证技术、数字签名与公钥证书

本文讲解对称加密、非对称加密、消息摘要、MAC、数字签名、公钥证书的用途、不足和解决的问题。 0.概述   当发送方A向接收方B发送数据时,需要考虑的问题有:   1.数据的安全性。   2....
  • wodeai1235
  • wodeai1235
  • 2017年03月08日 18:51
  • 227

Open SSL 常用函数

  • 2010年01月06日 13:16
  • 278KB
  • 下载

嵌入式 OpenSSL 常用函数——Base64编码及解码和证书操作

Base64编码就是把二进制数据转换为可见的ASCII字符。 Base64解码是相反的过程。 主要函数 1、  Base64编码初始化函数 Void EVP_EncodeInit(EVP_ENCODE...
  • skdkjxy
  • skdkjxy
  • 2013年12月02日 14:45
  • 650

[JAVA加解密]消息摘要算法、消息认证算法

一、消息摘要算法 1.消息摘要算法的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密,只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文。消息摘要算法不存在密钥的管理与分发问题...
  • u012107165
  • u012107165
  • 2015年01月19日 21:38
  • 669

java 加解密算法,摘要算法和数字签名算法

  • 2016年11月28日 16:03
  • 3.04MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:嵌入式 Open SSL 常用函数——加解密及摘要
举报原因:
原因补充:

(最多只允许输入30个字)