解释:pin block,顾名思义就是pin块,密码块的意思,实际上是对pin原文做一定转换后的结果,望采纳。
内容:
说明:对称算法和非对称算法的区别:就是加解密的密钥是不是一样的,一样的就是对称的,不一样的就是非对称的。
分组算法:举个例子 对于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) |
|
第一个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(摘要算法)进行运算得出的。 |
SM3(MD5,SHA256)就是算个hash值。
工作密钥:密码键盘的主要工作就是获取让用户输入密码,那么密码不能明文进行传输的,要通过一个密钥进行加密,那么这个密钥就是 工作密钥,为最终密码键盘的工作而服务的密钥就叫工作密钥。
主密钥:用来加解密工作密钥的密钥就是主要密钥,即主密钥。
保护密钥:用来加解密主密钥的密钥就是保护密钥。
保护密钥--------->主密钥--------------->工作密钥。
校验值:为了检验解出来的密钥是否正确的。约定:用密钥对8/16个字节的0x00进行加密得到的值。
Pinblock:用卡号+客户输入的密码按照一定的规则进行组合(异或运算)作为明文。
解释:pin block,顾名思义就是pin块,密码块的意思,实际上是对pin原文做一定转换后的结果,望采纳。
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