openssl 哈希算法 实战 MD5/SHA系列/DSS/RIPEMD160

本文深入探讨了openssl中的哈希算法,包括MD5、SHA系列、DSS和RIPEMD160。随着计算能力增强,MD5的安全性受到挑战,尽管SHA因其更长的哈希值被认为更安全,但穷举破解下MD5与SHA的风险相当。建议在使用MD5时加盐处理,并优先选择SHA作为哈希算法。


前面介绍了openssl 常见的几种对称加密算法的调用方法,这里继续研究一下openssl的单项哈希函数,EVP对加密算法进行了很好的封装,提供了简单易用的调用端口,使用非常方便。


在开头需要说明的一点是,随着计算机计算能力的提升,破解MD5变得门槛越来越低。因此很多文章说SHA更加安全,原因主要是SHA的哈希值更长。

但如果使用穷举破解时,需要遍历原数据的空间,如果MD5与SHA的计算速度相差不大的时候,是否意味着MD5与SHA在穷举面前被破译的概率都是一样的呢?


本文将介绍的哈希算法有   MD5/SHA系列/DSS/RIPEMD160 ,调用逻辑非常简单,请看代码:

#include <stdio.h>
#include "evp.h"
#include <string.h>

int get_digest(const EVP_MD *type,char *s_buf,int s_len,char *d_buf,int *d_len,char *msg){
    int i,ret = 0;
    EVP_MD_CTX ctx;
    EVP_MD_CTX_init(&ctx);
    EVP_DigestInit_ex(&ctx,type,NULL);
    EVP_DigestUpdate(&ctx,s_buf,s_len);
    EVP_DigestFinal_ex(&ctx,d_buf,d_len);
    EVP_MD_CTX_cleanup(&ctx);
    fprintf(stderr,"%s message:[%s]\ndigestlen:[%d]digest:[",msg,s_buf,*d_len);
    for(i=0;i<*d_len;i++){
	fprintf(stderr,"%02X",*(d_buf+i));
    }
    fprintf(stderr,"]\n");
    return
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值