一、描述
javacard中用到了该算法,所以对其做个了解
下图为该算法的实现过程
二、具体实现
实现需要 2key长度的DESkey,(16字节),前8字节为K1,后8个字节为K2
明文
step1:
对明文数据进行填充,具体是ISO9797-m1 还是 ISO9797-m2,可以参考ISO9797协议数据填充,
step2:
使用DES CBC模式(iv默认为0), K1加密,得到最后的8字节res1,
step3:
使用DES ECB模式,K2解密res1,得到新的8字节res2,
step4:
使用DES ECB模式,K1加密res2,得到最终的8字节res。
ALG_DES_MAC8_ISO9797_1_M1_ALG3 M1填充,最后mac取8字节
ALG_DES_MAC8_ISO9797_1_M2_ALG3 M2填充,最后mac取8字节
ALG_DES_MAC4_ISO9797_1_M1_ALG3 M1填充,最后mac取4字节
A