- 直接使用openssl API进行摘要计算
- 封装 openssl API 摘要计算C++
- 定义摘要算法枚举,文件名DigestAlgo.h
- 实现枚举类头文件中的全局函数,重载 << 运算符,文件名DigestAlgo.cpp
- 封装摘要类,文件名Digest.h
- 摘要类实现,文件名Digest.cpp
- `摘要实现类简要说明`
- 使用 Digest 类计算摘要
- 总结
直接使用openssl API 计算摘要一般包含如下三个步骤
- 初始化指定摘要算法的上下文
- 更新数据。可以添加多次,比如"hello, world" 可以分两次更新,可以参考如下代码
- 计算摘要值。对第2步更新的所有的数据计算摘要,通过传出参数返回摘要值
- 将第3步计算的二进制摘要值转换为十六进制或Base64输出,本步骤可省略,看具体需要采用合适的方式
对下面的代码进行简单说明。SHA_DIGEST_LENGTH 是 openssl 里面定义的一个宏,表示SHA1算法的摘要值字节数20。将二进制字节流数据转换为十六进制字符串,该字符串的长度是二进制字节流长度的二倍,所以字符串数组(指针) result 的长度 = SHA_DIGEST_LENGTH * 2 + 1,多出来的 1 是 C 字符串的结尾符


