解释: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) | |
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(摘要算法)进行运算得出的。 |
第一个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值。
哈希(Hash)算法可以看作是一种加密算法,也称为散列函数。哈希算法可以 将任意长度的消息(二进制数据)映射成为一个长度较短目长度固定的哈希值(二进制 串),并且针对不同的输入数据的映射结果极大概率是不一样的。在哈希算法中,一个 从明文到密文的过程几乎是不可实现的,是一种单向体制。哈希值通常被称作为数字摘 要(DigitalDigest),可以通过哈希值来对数据的完整性进行校验,可以应用哈希算法 对数据文件在不查看其内容的情况下进行校验。哈希算法具有易压缩性、易计算性、 易更改性、单向性、抗碰撞性笔特性。 哈希算法有很多种,包括MD系列、SHA系列等。类似于加解密算法,长度越长 的算法基本认为越安全。目前最流行的加密算法是SHA-2,但是跟SHA-1不同,SHA-2 不是一种算法,而是一系列算法的统称,其中就包括SHA-256[56]。在SHA-256算法中, 对输入消息以512位的分组为单位进行处理且最大长度小于264位,经过SHA-256算 法的运算,输出一个固定长度的值-即256位的数字摘要。 根据哈希函数的抗碰撞性,在进行数据完整性校验时,接受者通过对收到的消息进 行相同的哈希运算,将新得出的哈希值与之前声明的数据哈希值进行比较,若不相同, 那么确定传递的消息被篡改。因此,在区块链系统中,为了方便数据的校验和存储,常 用哈希函数来进行数据的完整性校验。
工作密钥:密码键盘的主要工作就是获取让用户输入密码,那么密码不能明文进行传输的,要通过一个密钥进行加密,那么这个密钥就是 工作密钥,为最终密码键盘的工作而服务的密钥就叫工作密钥。
主密钥:用来加解密工作密钥的密钥就是主要密钥,即主密钥。
保护密钥:用来加解密主密钥的密钥就是保护密钥。
保护密钥--------->主密钥--------------->工作密钥。
校验值:为了检验解出来的密钥是否正确的。约定:用密钥对8/16个字节的0x00进行加密得到的值。
用卡号+客户输入的密码按照一定的规则进行组合(异或运算)作为明文。
解释:pin block,顾名思义就是pin块,密码块的意思,实际上是对pin原文做一定转换后的结果,望采纳。
(常用默认的算法) -- 带主账号信息(倒数第二位开始向前取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