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
3
5` 9D09E6B734AF153D (明文工作密钥 && 3DES MAC) -> 1B54179F998C4471
算法2:
1
3` 7373737340404040 (明文工作密钥 && 3DES MAC) -> 7E118D29BE2DF933
出于安全性考虑, 更多使用 CBC算法
首次接触, 了解个大概, 记在这里帮助记忆, 有新理解后续补充.
2016-04-14 10:44:32
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 2918DF1A20CFF2BE7 (XOR) 1515151511111111 -> 8498E4B71DEE3AF6
3
8498E4B71DEE3AF6 (明文工作密钥 && 3DES 加密) -> BF2BC49521BA0028 4BF2BC49521BA0028 (XOR) 2222222215151515 -> 9D09E6B734AF153D
5` 9D09E6B734AF153D (明文工作密钥 && 3DES MAC) -> 1B54179F998C4471
算法2:
1
4444444444444444 (XOR) 1515151511111111 -> 5151515155555555 25151515155555555 (XOR) 2222222215151515 -> 7373737340404040
3` 7373737340404040 (明文工作密钥 && 3DES MAC) -> 7E118D29BE2DF933
出于安全性考虑, 更多使用 CBC算法
首次接触, 了解个大概, 记在这里帮助记忆, 有新理解后续补充.
2016-04-14 10:44:32
相关文章推荐
- [winphone][C#] 将明文字节串转换成不带主账号的pinblock格式
- 谈一谈JS消息机制和事件机制的理解
- Docker私有仓库部署
- freemarker 列表处理
- redis.conf配置详细解析
- UITextField及代理方法
- KMP算法C代码实现
- Hash+折半枚举 51Nod1440 序列分解
- 【Android问题记录】为什么在终端直接查询数据库可以查到数据但是用代码总是查不到
- GDI32中Color结构 和 .Net中Color结构的区别
- 设计模式 装饰者模式 带你重回传奇世界
- Atitit.获取某个服务 网络邻居列表 解决方案
- 一、Android Studio入门——Eclipse快捷键配置
- Biztalk异常处理解决方案
- Atitit.获取某个服务 网络邻居列表 解决方案
- MyBatis-Spring-SqlSessionFactoryBean
- 解决java内存溢出最佳配置
- 【SSM-SpringMVC框架】非注解的处理器适配器和映射器
- JavaScript程序员必备的5个debug技巧
- 仿百度搜索代码