MAC && PIN

最近在使用金属键盘, 需要对数据进行 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):
14444444444444444 (明文工作密钥 && 3DES 加密) -> 918DF1A20CFF2BE7
2
918DF1A20CFF2BE7 (XOR) 1515151511111111 -> 8498E4B71DEE3AF6
38498E4B71DEE3AF6 (明文工作密钥 && 3DES 加密) -> BF2BC49521BA0028
4
BF2BC49521BA0028 (XOR) 2222222215151515 -> 9D09E6B734AF153D
5` 9D09E6B734AF153D (明文工作密钥 && 3DES MAC) -> 1B54179F998C4471

算法2:
14444444444444444 (XOR) 1515151511111111 -> 5151515155555555
2
5151515155555555 (XOR) 2222222215151515 -> 7373737340404040
3` 7373737340404040 (明文工作密钥 && 3DES MAC) -> 7E118D29BE2DF933

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

首次接触, 了解个大概, 记在这里帮助记忆, 有新理解后续补充.
2016-04-14 10:44:32

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值