您的位置:首页 > 其它

MAC && PIN

2016-04-14 10:51 169 查看
最近在使用金属键盘, 需要对数据进行 MAC运算和PIN运算. 为帮助记忆特在此总结如下:

A) 3DES 的 MasterKey 加载单倍 DES 的 MacKey和PinKey

example:

LocalMasterKey: 303132333435363738393A3B3C3D3E3F

MasterKey: 38373635343332313041424344454647

MacKey: 6162636465666768

CryptData: 4A4B4C4D4E4F5051

1` 使用 LocalMasterKey(即前端主密钥) 当密钥解密MasterKey(需拆分为前后两部分), 使用三倍 DES 算法:

3837363534333231 (LocalMasterKey && 3DES 解密) -> C03DCFDCF69B7641

3041424344454647 (LocalMasterKey && 3DES 解密) -> 8B1AAF7D56D3934A

2` 拼接步骤1中得到的两段解密结果: C03DCFDCF69B76418B1AAF7D56D3934A ;

3` 使用拼接结果作为密钥解密 MacKey:

6162636465666768 (C03DCFDCF69B76418B1AAF7D56D3934A && 3DES 解密) -> B9020C9B5F2509E3

4` 使用步骤3的解密结果对 CryptData 做 MAC 运算:

4A4B4C4D4E4F5051 (B9020C9B5F2509E3 && DES 算法) -> 007102BE137E1804

B) 生成 PinBlock

example:

主密钥: 31313131313131313131313131313131

密文工作密钥: 3E1A500F23992F9349C498C96D41585D

卡号: 0000010005114072 (去掉卡号最后一位校验位,截取后12位)

密码: 06123456FFFFFFFF

1` 用主密钥对密文工作密钥进行3DES解密(分为前后半段进行)

得到明文工作密钥 1234567812345678ABCDEFABCDEF1234

2` 卡号和密码进行亦或:

0000010005114072 (XOR) 06123456FFFFFFFF -> 06123556FAEEBF8D

3` 使用明文工作密钥对步骤2亦或结果进行加密得到 PinBlock

06123556FAEEBF8D (明文工作密钥 && 3DES) -> 429AB0C20660D795

=============================================

接B) 密钥,做MAC 报文计算

CryptData: 444444444444444415151515111111112222222215151515

CBC算法( x9.9):

1
4444444444444444 (明文工作密钥 && 3DES 加密)  -> 918DF1A20CFF2BE7

2
918DF1A20CFF2BE7 (XOR) 1515151511111111 -> 8498E4B71DEE3AF6

3
8498E4B71DEE3AF6 (明文工作密钥 && 3DES 加密)  -> BF2BC49521BA0028

4
BF2BC49521BA0028 (XOR) 2222222215151515 -> 9D09E6B734AF153D

5` 9D09E6B734AF153D (明文工作密钥 && 3DES MAC) -> 1B54179F998C4471

算法2:

1
4444444444444444  (XOR) 1515151511111111  -> 5151515155555555

2
5151515155555555 (XOR) 2222222215151515 -> 7373737340404040

3` 7373737340404040 (明文工作密钥 && 3DES MAC) -> 7E118D29BE2DF933

出于安全性考虑, 更多使用 CBC算法

首次接触, 了解个大概, 记在这里帮助记忆, 有新理解后续补充.

2016-04-14 10:44:32
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息