美文网首页程序员
对加密算法 AES-128-CBC 的一些理解

对加密算法 AES-128-CBC 的一些理解

作者: Kake | 来源:发表于2017-03-23 22:49 被阅读8401次

    对加密算法 AES-128-CBC 的一些理解

    简单说明

    • AES-128-CBC是一种分组对称加密算法,即用同一组key进行明文和密文的转换,以128bit为一组,128bit==16Byte,意思就是明文的16字节为一组对应加密后的16字节的密文。
    • 若最后剩余的明文不够16字节,需要进行填充,通常采用PKCS7进行填充。比如最后缺3个字节,则填充3个字节的0x03;若最后缺10个字节,则填充10个字节的0x0a;
    • 若明文正好是16个字节的整数倍,最后要再加入一个16字节0x10的组再进行加密

    需要参数

    • 传入要加密的明文
    • 传入一个16字节的key
    • 传入一个16字节的初始偏移向量IV

    CBC模式:


    用初始向量和密钥加密第一组数据,然后把第一组数据加密后的密文重新赋值给IV,然后进行第二组加密,循环进行直到结束

    使用openSSL命令测试

    加密

    // -e加密,-aes-128-cbc指定使用加密算法,-iv指定偏移向量为16进制,-K指定16进制密钥,-in指定要加密的文件,-out指定密文输出文件
    // 初始IV为16个字节的0x00, 密钥为 abcdefghijklmnop
    openssl enc -e -aes-128-cbc -iv 0000000000000000 -K 6162636465666768696a6b6c6d6e6f70 -in input -out output
    

    也可以直接用管道指向hexdump命令进行密文打印

    openssl enc -e -aes-128-cbc -iv 0000000000000000 -K 6162636465666768696a6b6c6d6e6f70 -in input | hexdump -C
    

    解密

    // -d解密
    openssl enc -d -aes-128-cbc -iv 0000000000000000 -K 6162636465666768696a6b6c6d6e6f70 -in input -out output
    

    注意:


    每组加密过的密文都要重新赋给偏移向量,然后进行下一组的加密,所以可以用上一组的密文来充当偏移向量解密这一组的密文

    相关文章

      网友评论

        本文标题:对加密算法 AES-128-CBC 的一些理解

        本文链接:https://www.haomeiwen.com/subject/fmfxottx.html