澄清OpenSSL中的EVP_BytesToKey()函数

我在看这个页面: http : //www.openssl.org/docs/crypto/EVP_BytesToKey.html

在那里,它说:

如果总密钥和IV长度小于摘要长度并且使用MD5,则推导算法与PKCS#5 v1.5兼容,否则使用非标准扩展来导出额外数据。

我正在使用AES-256-CBC密码和MD5。 从上面的摘录判断,这告诉我什么? 这是否意味着我与PKCS#5 v1.5兼容,或者它是否意味着它使用了一些非标准的东西?

它意味着它所说的。 PKCS5版本1.5假设密钥字节数加上IV字节数小于或等于散列函数输出的大小。 PKCS5版本2修复了这些问题,但它在定义了EVP_BytesToKey函数后出现,因此EVP_BytesToKey以非标准方式生成更大密钥大小的关键字节。


OpenSSL 1.1.0c改变了一些内部组件中使用的摘要算法 。 以前使用MD5,1.1.0切换到SHA256。 请注意,在EVP_BytesToKeyopenssl enc等命令中,更改不会影响您。