密码键盘常用(加解密,链接,MAC,PINBLOCK)算法介绍-资料整理
常用算法介绍
一、DES,TDES算法
1,DES(Data Encryption Standard,标准加密算法)
DES采用了64位的分组长度和56位的**长度,它将64位的输入经过一系列变换得到64位的输出。解密则使用了相同的步骤和相同的**。DES的**长度为64位,由于第n*8(n=1,2,…8)是校验位,因此实际参与加密的长度为56位,**空间含有2^56个**。
2,3DES(Triple Data Encryption Standard,三重标准加密算法)
3DES是DES加密算法的一种模式,它使用3条64位的**对数据进行三次加密。3DES(即Triple DES)是DES向AES过渡的加密算法(1999年,NIST将3-DES指定为过渡的加密标准),是DES的一个更安全的变形。它是以DES为基本模块,通过组合分组方法设计出分组加密算法。
3,DES和3DES的关系
3DES = DESEncrypt(K3,DESDecrypt(K2, DESEncrypt(K1, DATA)));
Result1 = DESEncrypt(K1, DATA);
Result2 = DESDecrypt(K2, Result1);
Result = DESEncrypt(K3, Result2 );
4,3DES**分组案例
1)KeyLen = 16;
KEY = KeyLeft + KeyRight;
K1 = KeyLeft, K2 = KeyRight, K3 = KeyLeft
计算案例:
11223344556677889900AABBCCDDEEFF Encrypt 1234567890ABCDEF
- KEY = 11223344556677889900AABBCCDDEEFF, KeyLen = 16
- KEY = 1122334455667788 + 9900AABBCCDDEEFF
- KeyLeft = 1122334455667788; KeyRight = 9900AABBCCDDEEFF
- K1 = 1122334455667788;
- K2 = 9900AABBCCDDEEFF;
- K3 = 1122334455667788;
- Result1 = DESEncrypt(K1, DATA) = DESEncrypt(1122334455667788, 1234567890ABCDEF) = 80B152BBAB64EAFF;
- Result2 = DESDecrypt(K2, Result1) = DESDecrypt(9900AABBCCDDEEFF, Result1) = DESDecrypt(9900AABBCCDDEEFF, 80B152BBAB64EAFF) = E4D517773B4F5E33;
- Result = DESEncrypt(K3, Result2 ) = DESEncrypt(1122334455667788, Result2 ) = DESEncrypt(1122334455667788, E4D517773B4F5E33) = 1B3606F30B101507;
2)KeyLen = 24;
KEY = KeyLeft + KeyCenter + KeyRight
K1 = KeyLeft, K2 = KeyCenter , K3 = KeyRight
计算案例:
11223344556677889900AABBCCDDEEFFFEDCBA0987654321 Encrypt 1234567890ABCDEF
二、ECB,CBC算法
分组加密,也叫块加密(block cyphers),一次加密明文中的一个块。是将明文按一定的位长分组,明文组经过加密运算得到密文组,密文组经过解密运算(加密运算的逆运算),还原成明文组。分组加密算法中,有ECB,CBC,CFB,OFB这几种算法模式。
1,电码本模式(Electronic Codebook Book (ECB)
ECB模式是分组密码的一种最基本的工作模式。在该模式下,待处理信息被分为大小合适的分组,然后分别对每一分组独立进行加密或解密处理。如下图所示:
2,密码分组链接模式(Cipher Block Chaining (CBC))
CBC模式是将前一个密文分组与当前明文分组的内容混合起来进行加密的,这样就可以避免ECB模式的弱点。CBC模式首先将明文分组与前一个密文分组进行XOR运算,然后再进行加密,如下图所示:
3,ECB-CBC基础算法对比
- MAC各种算法介绍
1,MAC_CBC算法(支持**长度:8字节,16字节,24字节。)
CBC模式加密数据,取结果最后8字节作为MAC结果。
2,MAC_X9.9算法(**长度:8字节)
算法与MAC_CBC一致。
3,MAC_X9.19算法(**长度:16字节,24字节)
CBC模式加密数据,取结果的最后8个字节(R’)按**情况再处理
(1)8字节**,R’就是结果
(2)16字节或24字节**,R’经K2解密K3加密后得到结果
4,MAC_PBOC算法
数据末尾加0x80,后续算法与MAC_A9.19一致。
5,MAC_BANKSYS算法
数据分组异或后结果拆分成16字节,取前8字节用**加密,结果与后8字节异或,异或后的结果再加密,加密后的结果拆分成16字节,前8字节为MAC结果。
算法步骤:
- 数据分组异或得到8字节结果R1
- R1拆分成16字节数据,分为前8字节R21和后8字节R22
- R21用**加密,结果与R22异或,得到R3
- R3用**加密,得到结果R4
- R4拆分成16字节数据,分别为前8字节R51,和后8字节R52
- 取R51作为MAC结果
四,PINBCLOK算法
- Format: CLPPPPxxxxxxxxXX, XOR with PAN
- PAN: 0000AAAAAAAAAAAA
- C: 0x00
- L: the length of Pins
- P: the Pins (4~12 bit digits)
- X: Padding (0xF)
- x: P or X
- A: Primary Account Number, minimum 12 digits without check number.
- Format: PPPPxxxxxxxxxxxx
- P: the Pins (4~16 bit digits)
- X: Padding (0x0~0xF)
- x: P or X
部分资料源于网络,侵删。