常用算法介绍

一、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
1. KEY = 11223344556677889900AABBCCDDEEFF, KeyLen = 16
2. KEY = 1122334455667788 + 9900AABBCCDDEEFF
3. KeyLeft = 1122334455667788; KeyRight = 9900AABBCCDDEEFF
4. K1 = 1122334455667788;
5. K2 = 9900AABBCCDDEEFF;
6. K3 = 1122334455667788;
7. Result1 = DESEncrypt(K1, DATA) = DESEncrypt(1122334455667788, 1234567890ABCDEF) = 80B152BBAB64EAFF;
8. Result2 = DESDecrypt(K2, Result1) = DESDecrypt(9900AABBCCDDEEFF, Result1) = DESDecrypt(9900AABBCCDDEEFF, 80B152BBAB64EAFF) = E4D517773B4F5E33;
9. 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模式是分组密码的一种最基本的工作模式。在该模式下,待处理信息被分为大小合适的分组,然后分别对每一分组独立进行加密或解密处理。如下图所示:

Des密钥扩展 des和3des密钥长度_加密算法

2,密码分组链接模式(Cipher Block Chaining (CBC))

CBC模式是将前一个密文分组与当前明文分组的内容混合起来进行加密的,这样就可以避免ECB模式的弱点。CBC模式首先将明文分组与前一个密文分组进行XOR运算,然后再进行加密,如下图所示:

Des密钥扩展 des和3des密钥长度_数据_02

 

 

3,ECB-CBC基础算法对比

Des密钥扩展 des和3des密钥长度_加密算法_03

 

  • MAC各种算法介绍

 

1,MAC_CBC算法(支持密钥长度:8字节,16字节,24字节。)

CBC模式加密数据,取结果最后8字节作为MAC结果。

Des密钥扩展 des和3des密钥长度_密钥长度_04

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加密后得到结果

 

 

 

 

Des密钥扩展 des和3des密钥长度_密钥长度_05

4,MAC_PBOC算法

数据末尾加0x80,后续算法与MAC_A9.19一致。

5,MAC_BANKSYS算法

数据分组异或后结果拆分成16字节,取前8字节用密钥加密,结果与后8字节异或,异或后的结果再加密,加密后的结果拆分成16字节,前8字节为MAC结果。

算法步骤:

  1. 数据分组异或得到8字节结果R1
  2. R1拆分成16字节数据,分为前8字节R21和后8字节R22
  3. R21用密钥加密,结果与R22异或,得到R3
  4. R3用密钥加密,得到结果R4
  5. R4拆分成16字节数据,分别为前8字节R51,和后8字节R52
  6. 取R51作为MAC结果

Des密钥扩展 des和3des密钥长度_Des密钥扩展_06

 

四,PINBCLOK算法

1,  ANSI X9.8

  • 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.

 

2  IBM3624

  • Format:  PPPPxxxxxxxxxxxx
  • P:  the Pins (4~16 bit digits)
  • X:  Padding (0x0~0xF)
  • x:  P or X

部分资料源于网络,侵删。