1.有传输密钥的流程:
服务器的流程: 1.服务器固定一个传输密钥 2.服务器通过传输密钥加密主密钥明文得到主密钥密文 3.主密钥明文通过16个0或者32个0加密得到一个校验值,根据自己定的要求取前8位或者6位,4个字节或者3个字节,将取出来的校验值拼接到主密钥密文后面。机器与app的流程: 1.pos机出厂固定好与服务器一样的传输密钥,或者通过app写入 2.app拿到服务器的主密钥密文,写入到Pos机, 3.pos机通过传输密钥解密主密钥密文得到主密钥明文,主密钥明文进行16个0或者32个0进行加密,得到校验值,取前面8位或者6位,4个字节或者3个字节,如果和服务器的主密钥密文后面的校验值相等,说明pos机和服务器算法一致,主密钥写入成功 4.app拿到服务器的工作密钥密文,写入到pos机 5.pos机通过主密钥明文解密工作密钥第一部分的pin密钥密文,得到pin密钥明文,用pin密钥明文加密16个0或者32个0得到校验值,取前8位或者6位,4个字节或者3个字节,如果和app写入的校验值一致,则pin密文密钥是正确的,然后验证第二部分mac密文密钥…..步骤和pin密钥密文验证方式一致,最后验证track密文密钥,和之前的两部分也是一致的,如果都校验值都验证通过,那么工作密钥写入成功
二、
2.没有传输密钥的流程:
机器与app的流程: 1.app下发主密钥明文到pos机,主密钥写入成功 2.app下发工作密钥到pos机 3.pos机通过主密钥明文解密工作密钥,通过校验值去验证,一组一组验证,和有传输密钥的时候一致….详情请看有传输密钥的第五个步骤。如果三组的校验值一致,则工作密钥写入成功1.当服务器下发到app的是主密钥密文的时候,才需要传输密钥。 2.很多时候主密钥都是明文的形式,且大多数都是在pos机出场的时候导入,app只会写入工作密钥 3.用主密钥的明文加密工作密钥密文,工作密钥密文去加密mac,pin,trackData 4.服务器和pos机算法一定是一致的,才能正确加解密。
有传输密钥时候:
1默认采用des算法,且是8个字节,16位的密钥数据,传输密钥解密主密钥密文得到主密钥明文 . 2.主密钥明文加密16个0得到校验值,通过校验值去验证app下发的主密钥密文后面的校验值是否一致,如果一致,写入主密钥密文成功。 3.通过主密钥明文解密三组工作密钥密文,拿到工作密钥明文,这里只演示Pin密钥密文。 4.Pin密钥明文加密16个0,得到校验值,然后和服务器下发给app的工作密钥密文验证是否跟它一致 5.一直将工作密钥密文的其他两组验证成功,则写入工作密钥成功 6.没有传输密钥的加解密过程只是无需通过传输密钥解密去拿到主密钥明文,所以直接从第三步开始,这里就不演示了。