C++如何实现MD5或SHA256哈希?(使用OpenSSL库)

admin 百科 12
使用OpenSSL的EVP接口计算SHA256或MD5摘要最稳妥:先EVP_MD_CTX_new,再EVP_DigestInit_ex选算法,EVP_DigestUpdate分段输入,EVP_DigestFinal_ex获取二进制结果,最后转十六进制;注意错误检查、内存释放及线程安全。

C++如何实现MD5或SHA256哈希?(使用OpenSSL库)-第1张图片-佛山资讯网

直接用 OpenSSL 的 EVP 接口是最稳妥、跨平台且符合现代实践的方式。别碰老的 MD5()SHA256() 单独函数,它们已弃用且不支持流式计算。

1. 编译前准备:链接 OpenSSL 库

确保系统已安装 OpenSSL 开发包(如 Ubuntu 上 sudo apt install libssl-dev),编译时加链接选项:

g++ your_file.cpp -lssl -lcrypto

登录后复制

Windows 下若用 MinGW 或 MSVC,需对应配置 OpenSSL 的头文件路径和 .lib/.a 文件。

2. 用 EVP 接口计算字符串的 SHA256(推荐写法)

以下代码适用于任意长度输入,支持增量更新(可用于大文件或网络流):

立即学习“C++免费学习笔记(深入)”;

说明:先初始化上下文(EVP_MD_CTX_new),选算法(EVP_sha256()),更新数据(EVP_DigestUpdate),最后获取摘要(EVP_DigestFinal_ex)。

标签: windows 字节 ubuntu ssl c++ win 区别 crypto

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~