代码之家  ›  专栏  ›  技术社区  ›  Ryan

使用aes-256-cbc的openssl hmac

  •  5
  • Ryan  · 技术社区  · 16 年前

    openssl Linux上的命令行程序。我一直在看手册页,但不太清楚如何成功地使HMAC。我可以使用 enc 命令 openssl

    openssl enc -aes-256-cbc -in plaintext -out ciphertext
    

    任何建议或指导都会很好

    2 回复  |  直到 16 年前
        1
  •  9
  •   Nisse Engström sting_roc    9 年前

    你可能在问 CBC-MAC I found a blog post

    openssl enc -e -aes-256-cbc -K 0123456789ABCDEF -iv 0000000000000000 < file | tail -c 16 | od -A n
    
    • -K
    • -iv 显然提供了一个全零的IV,这是CBC-MAC的关键。
    • 这个 tail -c 16
    • od 就是把它转换成十六进制,网站上说这是很常见的。否则代替 od -A n 你能做到的 base64 如果这更适用,或者完全关闭它,只保留原始字节。

    不能对文件使用AES HMAC,因为AES256CBC是一种分组密码,而不是散列算法。AES256 cbc用于加密和解密文件。HMAC用于验证文件的完整性,它的核心需要一个哈希算法,如SHA-1或MD5。

    OpenSSL dgst

    另外,我认为使用分组密码作为MAC被称为 EMAC

        2
  •  2
  •   Daniel    12 年前

    使用所需的任何AES算法加密文件(在本例中为AES-256-cbc);根据密码生成AES密钥(将“password”更改为您的密码),并使用-p开关转储用于加密的salt、key和iv。

    openssl enc -e -k password -p -aes-256-cbc -in plaintext -out ciphertext
    salt=A2402067B9BFD4A1
    key=EB3A88115C30F26C3987F1AB2577DF5B58C80EBEEA623506517FAD843C64E1FC
    iv =B382453BCBF579CE14C0726D343F40E2
    

    openssl dgst -hmac EB3A88115C30F26C3987F1AB2577DF5B58C80EBEEA623506517FAD843C64E1FC -sha256 ciphertext
    HMAC-SHA256(ciphertext)= fa3fb9c9c743f35ba81793e2704c3fc9737cd2675011110cb1655ea7ceed2914
    

    如果需要验证HMAC,请记住AES密钥以供以后使用。请注意,我不知道您试图完成什么,我不能声称上述满足您的加密要求,但它显示了如何加密文件,获取加密密钥,并在HMAC计算中使用该加密密钥。