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

直接用 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
还木有评论哦,快来抢沙发吧~