• 银联加密算法


    非常多人对银联卡的加密算法感兴趣,毕竟分分钟涉及的都是你的钱的安全,但网上非常少人却讲银联标准加密算法。遂写一遍当做是自己的学习笔记。偶尔忘了能够翻翻,同一时候希望能够帮助到其它人。
    首先要认识一下cbc算法和ecb算法。cbc算法是链式的。慢。不可并行处理,但更安全,由于每一次加密都是依赖于上一次的结果,同一时候这也会导致一次错将导致后面的所有错误。
    ecb算法是分块运算的,可并行。效率高,但不够安全,每一块同样的数据经加密后都是一样的结果。
    对照了两种算法之后。你应该能猜到一般都会用相对更安全的做法。
    来看两张图:
    ecb算法

    cbc算法

    银联的mac一般都是採用称做ecb加密算法,可是请注意。银联的ecb算法事实上就是cbc算法!是链式的。并且,据我所知的银行都是採用银联标准算法,或者略微有点变种而已,由此也能够看出银联标准ecb加密算法的重要性。
    POS终端採用ECB的加密方式,简述例如以下:
    a) 将欲发送给POS中心的消息中,从消息类型(MTI)到63域之间的部分构成MAC ELEMEMENT BLOCK
    (MAB)。
    b) M1为8个字节的0,对MAB。按每8个字节做异或(无论信息中的字符格式)。假设最后不满8个字节,则加入“0X00”。
    演示样例 :
    M1=0000000000000000
    MAB = M2 M3 M4 当中:
    M1 = MS11 MS12 MS13 MS14 MS15 MS16 MS17 MS18
    M2 = MS21 MS22 MS23 MS24 MS25 MS26 MS27 MS28
    M3 = MS31 MS32 MS33 MS34 MS35 MS36 MS37 MS38
    M4 = MS41 MS42 MS43 MS44 MS45 MS46 MS47 MS48

    按例如以下规则进行异或运算:
    MS11 MS12 MS13 MS14 MS15 MS16 MS17 MS18
    XOR) MS21 MS22 MS23 MS24 MS25 MS26 MS27 MS28
    ——————————————————————————————
    TEMP BLOCK1 = TM11 TM12 TM13 TM14 TM15 TM16 TM17 TM18

    对BLOCK1用MAK加密:
    ENC BLOCK1 = eMAK(TM11 TM12 TM13 TM14 TM15 TM16 TM17 TM18)
    = EN11 EN12 EN13 EN14 EN15 EN16 EN17 EN18

    然后。进行下一步的运算:
    EN11 EN12 EN13 EN14 EN15 EN16 EN17 EN18
    XOR) MS31 MS32 MS33 MS34 MS35 MS36 MS37 MS38
    ——————————————————————————————————TEMP BLOCK2 = TM21 TM22 TM23 TM24 TM25 TM26 TM27 TM28

    对BLOCK2用MAK加密:
    ENC BLOCK2 = eMAK(TM21 TM22 TM23 TM24 TM25 TM26 TM27 TM28)
    = EN21 EN22 EN23 EN24 EN25 EN26 EN27 EN28

    再进行下一步的运算:
    EN21 EN22 EN23 EN24 EN25 EN26 EN27 EN28
    XOR) MS41 MS42 MS43 MS44 MS45 MS46 MS47 MS48
    ————————————————————————————————————RESULT BLOCK = TM31 TM32 TM33 TM34 TM35 TM36 TM37 TM38

    对BLOCK用MAK加密:
    ENC BLOCK = eMAK(TM31 TM32 TM33 TM34 TM35 TM36 TM37 TM38)
    = EN31 EN32 EN33 EN34 EN35 EN36 EN37 EN38

    c) 将运算后的结果(ENC BLOCK)转换成16 个HEXDECIMAL:
    ENC RESULT = EN31 EN32 EN33 EN34 EN35 EN36 EN37 EN38
    = EM311 EM312 EM321 EM322 EM331 EM332 EM341 EM342 || EM351 EM352 EM361 EM362 EM371 EM372 EM381 EM382
    演示样例 :
    ENC RESULT= %H84, %H56, %HB1, %HCD, %H5A, %H3F, %H84, %H84 转换成16 个HEXDECIMAL:
    “8456B1CD5A3F8484”作为MAC值
    取前8个字节作为mac:8456B1CD

    样例:
    3DES_Key=9BED98891580C3B245FE9EC58BFA8D2A
    IV=0000000000000000 // 初始向量。其作用是先与Input的前8字节做异或运算,得到的结果才被用于DES加密
    Input=F4F3E7B3566F6622098750B491EA8D5C
    ECB加密的结果=FE7B6C8A73167964798EBAC2BA4899AA
    CBC加密的结果=FE7B6C8A731679649273F6368EAE9E98

  • 相关阅读:
    git 码云
    keras训练cnn模型时loss为nan
    将矩阵补齐0
    将dataframe分割为训练集和测试集两部分
    另存了一次网页之后其它word打开格式都变了
    python 判断字符串是否为(或包含)IP地址
    为多维数组添加一列以及reshape用法注意
    memory error python报错
    列表转换为三维矩阵
    LaTeX参考文献出现问号
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/7375881.html
Copyright © 2020-2023  润新知