我正在尝试使用opensslLinux上的命令行程序获取文件的AES HMAC .我一直在查看手册页,但无法弄清楚如何成功制作HMAC.我可以使用enc命令加密文件openssl但是我似乎无法创建HMAC.加密如下所示:
openssl enc -aes-256-cbc -in plaintext -out ciphertext
Run Code Online (Sandbox Code Playgroud)
任何建议或教程都会很精彩
你可能会问CBC-MAC.为此,我认为您只需使用IV为0加密消息或文件,然后取最后一个块(AES256-cbc为16个字节). 我发现了一篇博文,介绍了如何使用OpenSSL执行此操作:
openssl enc -e -aes-256-cbc -K 0123456789ABCDEF -iv 0000000000000000 < file | tail -c 16 | od -A n
Run Code Online (Sandbox Code Playgroud)
-K 是你提供密钥的地方,如果你正在对它进行加密,那么wiki页面所说的密钥应该与你用来加密文件的密钥不同.-iv 显然提供了全零IV,这是CBC-MAC的关键.tail -c 16是让最后的AES256-CBC块,这是16个字节长.od是将它转换为十六进制,该网站说这是常见的.否则,如果更适用,则od -A n可以执行base64,或者完全不使用原始字节.您无法获取文件的AES HMAC,因为AES256-cbc是分组密码,而不是散列算法.AES256-cbc用于加密和解密文件.HMAC用于验证文件的完整性,并且在其核心需要哈希算法,例如SHA-1或MD5.
您是要尝试签名或验证文件,还是加密文件?要签名,请查看OpenSSL dgst命令并使用简单的HMAC(如MD5或SHA-1),或全力以赴并使用DSS/DSA对其进行数字签名.
另外,我认为使用分组密码作为MAC称为EMAC,但据我所知,OpenSSL不执行EMAC.EMAC只获取加密文件的最后一个块并对其进行加密以创建MAC.
| 归档时间: |
|
| 查看次数: |
9479 次 |
| 最近记录: |