如果有人能够分享使用C中的OpenSSL库计算Retail MAC的校验和的算法的实现示例,我将不胜感激。我找不到这样的内容。 附:对不起我的英文
答案 0 :(得分:0)
零售 MAC 使用两个单独的 DES 密钥(8 字节):K1 和 K2。例如,K1=0110213041506170
和 K2=8190A1B0C1D0E1F0
(十六进制)。
让 M 对消息进行 MAC 处理,例如,M="abcdefghijklmnopqrstuvwxyz"。
M0 然后是填充的消息(不要使用 OpenSSL 块填充!)
6162636465666768696A6B6C6D6E6F707172737475767778797A800000000000
(十六进制)。
使用 OpenSSL 如下:
openssl enc -des-cbc -K 0110213041506170 -iv 0000000000000000 -nopad -in M0 | \
tail -c 8 | \
openssl enc -d -des-ecb -K 8190A1B0C1D0E1F0 -nopad | \
openssl enc -des-ecb -K 0110213041506170 -nopad | \
xxd -p -u -c32
享受 MAC 468BB08720DAC59E
。
题外话:请记住,零售 MAC 被视为损坏。