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

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

 

    一、OpenSSL加密和解密

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

        void EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *a)

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

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

      2、加解密初始化函数

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

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

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

            参数const EVP_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函数

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

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

        功能:数据加解密

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

         返回值:1成功,0失败

    4、数据加解密结束函数

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

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

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

    5、释放内存。

    int EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *a);

 

    二、OpenSSL消息摘要

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

    1、初始化函数

        void EVP_MD_CTX_init(EVP_MD_CTX *ctx);

    功能:初始化EVP_MD_CTX结构体

    2、设置摘要算法函数

        int EVP_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函数

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

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

    4、摘要结束函数

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

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

    5、一次性计算摘要函数

        int EVP_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);

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值