实施零售MAC"算法通过C上的OpenSSL库

时间:2018-01-29 14:09:47

标签: macos algorithm openssl crc des

如果有人能够分享使用C中的OpenSSL库计算Retail MAC的校验和的算法的实现示例,我将不胜感激。我找不到这样的内容。 附:对不起我的英文

1 个答案:

答案 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 被视为损坏。