很多人对银联卡的加密算法感兴趣,毕竟分分钟涉及的都是你的钱的安全,但网上很少人却讲银联标准加密算法。遂写一遍当做是自己的学习笔记,偶尔忘了可以翻翻,同时希望能够帮助到其他人。
首先要认识一下cbc算法和ecb算法。cbc算法是链式的,慢,不可并行处理,但更安全,因为每一次加密都是依赖于上一次的结果,同时这也会导致一次错将导致后面的全部错误。
ecb算法是分块运算的,可并行,效率高,但不够安全,每一块相同的数据经加密后都是一样的结果。
对比了两种算法之后,你应该能猜到一般都会用相对更安全的做法。
来看两张图:
银联的mac一般都是采用称做ecb加密算法,但是请注意,银联的ecb算法其实就是cbc算法!是链式的,而且,据我所知的银行都是采用银联标准算法,或者稍微有点变种而已,由此也可以看出银联标准ecb加密算法的重要性。
POS终端采用ECB的加密方式,简述如下:
a) 将欲发送给POS中心的消息中,从消息类型(MTI)到63域之间的部分构成MAC ELEMEMENT BLOCK
(MAB)。
b) M1为8个字节的0,对MAB,按每8个字节做异或(不管信息中的字符格式),