对称算法 ,非对称算法 ,Hash算法 ,密码键盘中常用的名词解释

内容

  1. 对称算法
  2. 非对称算法
  3. Hash算法
  4. 密码键盘中常用的名词解释                    

 

说明:对称算法和非对称算法的区别:就是加解密的密钥是不是一样的,一样的就是对称的,不一样的就是非对称的。

  • 对称算法(分组算法)

   分组算法:举个例子 对于des都是明文8个字节,密文也是8个字节,分组的意思就是对每8个字节进行加密获得的密文进行结合。解密就是逆向过程。

   SM4(国密):密钥16字节,密文16字节,明文是16字节的整数 倍

   DES:密钥8字节,密文8字节整数倍,明文是8字节的整数倍

   3DES(国际):密钥可以是16字节(key1+key2+key1),也可以是24字节(key1+key2+key3)。

   3DES加密过程为:C=Ek3(Dk2(Ek1(M)))

   3DES解密过程为:M=Dk1(EK2(Dk3(C)))。

  • 非对称算法

目前应用中非对称算法由两种RSA(国际)和SM2(国密).

算法

参数

说明

RSA

e

目前几个行都是固定为:0x010001(65537)

密钥长度(bit)

能加密的密钥长度/8,数据长度最大为1024=>128  2048=>512  1152=>144。

 

n(也有叫moudle)

128字节,由n,e 密钥长度可以计算出公钥

d

128字节,由e,d,密钥长度可以计算出私钥。

CRT(中国剩余定律)

算法有利于提高RSA的运算速度。

在CRT进行私钥解密的时候需要更多的参数P,Q,DP,DQ INVERQ.而非CRT算法只需要D即可。

填充方式

所谓的填充规则是为了数据更加安全在RSA算法进行的基础上对原始数据按照一定的规则进行组合(像密码键盘的pinblock)

  • nopadding(最原始的):就是加密数据前补0x00。0000000.。。。|M
  • KPCS#1:填充规则:EM=0X00||T||PS||0X00||M

第一个0是先导零,要来保证正整数;T是凑齐方法,可以是0,1,或者2;(T=0,代表ps必须是0x00,T=1 代表用0xFF进行填充,T=2 代表用不为0的随机数进行填充)PS就是填充数据:第二个0是分隔符;M就是原始数据。

PS:国密芯片:u192和u256.国密芯片是是支持u192和u256的。在u192中rsa的所有传入的参数是倒序的例如==》 e=0x00010001那么在192芯片导入e的时候就要传入4字节  01 00 01 00。然后192和256是支持非CRT算法的。  

 

SM2

国密推荐256位曲线参数

 

p=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFF

a=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFC

b=28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7 F39789F5 15AB8F92 DDBCBD41 4D940E93

 

n

私钥(32个字节)

gx、gy(公钥)

GX,GY各32个字节,公钥就是64个字节

密文组成(C1+C2+C3),新的标准是(C1+C3+C2)。

 

邮储用的C1C3C2,其他地方农信是C1C2C3

 

C1:64字节的随机数

C2:真正的密文,跟明文的长度是一样的

C3:是杂凑值(32字节)。通过SM3(摘要算法)进行运算得出的。

 

  • Hash算法

   SM3(MD5,SHA256)就是算个hash值。

  • 密码键盘中的常用名称解释

工作密钥:密码键盘的主要工作就是获取让用户输入密码,那么密码不能明文进行传输的,要通过一个密钥进行加密,那么这个密钥就是 工作密钥,为最终密码键盘的工作而服务的密钥就叫工作密钥。

主密钥:用来加解密工作密钥的密钥就是主要密钥,即主密钥。

保护密钥:用来加解密主密钥的密钥就是保护密钥。   

  保护密钥--------->主密钥--------------->工作密钥。                                              

校验值:为了检验解出来的密钥是否正确的。约定:用密钥对8/16个字节的0x00进行加密得到的值。

 

Pinblock:用卡号+客户输入的密码按照一定的规则进行组合(异或运算)作为明文。

 

ANSI9.8 算法 (常用默认的算法) -- 带主账号信息(倒数第二位开始向前取12位)
1.格式化主账号(其实就是补充到对应算法能计算的字节数,前面补0x00,SM4补到16个字节,des和3des补到 8个字节
2.格式化PIN(前面密码位数,然后补到对应算法能计算的字节数,后面补0xFF.
3.格式化后的主账号与格式化后的Pin按位异或

例子:账号:

1234567890123456

截取后:

456789012345(从倒数第二位开始往前数12位)

填充:

des:

0000456789012345(补足8个字节)

sm4:

00000000000000000000456789012345(补足16字节)

 

pin明文:

123456

填充:

des:

06123456FFFFFFFF(前加位数再补足8字节)

sm4:

06123456FFFFFFFFFFFFFFFFFFFFFFFF(前加位数再补足16字节)

 

 

 

异或结果:

des:

0612713176FEDCBA

sm4:

06123456FFFFFFFFFFFFBA9876FEDCBA

 

 

密钥明文:

11111111111111111111111111111111

 

pinblock:

DES:

CFBF4EC810315AF2

 

SM4:

1247750D89CADD4C4B2436A978E006B1

 

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_38998213/article/details/91882282