V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mdlcw
V2EX  ›  程序员

关于 AES 解密的问题

  •  
  •   mdlcw · 2018-11-23 18:18:32 +08:00 · 3016 次点击
    这是一个创建于 2183 天前的主题,其中的信息可能已经有所发展或是发生改变。
    代码如下。网页在线可以解出明文为 123456789,但我用 openssl 库却解不出来,困扰一天了,有没有人能解答一下。(密钥是某个字符串的 md5 值,用这个密钥自己加密解密是没问题的,就是加密出来的密文跟代码中的密文不一样就是了。感觉是密钥转换有问题,但是就是不知道问题出在哪里。)

    int main(void)
    {
    AES_KEY aes;
    char *key = "417490bbe32b07f6ee822f668a999046"; // 密钥
    unsigned char key_hex[16] = {0};
    char *ciphertext = "fcdcf51343011f7383e8e2aa1160d9d4"; // 密文
    unsigned char cipher_hex[32] = {0};
    char plaintext[32] = {0}; // 明文
    int len = 0;

    // 设置 key
    StrToHex(key_hex, key, 16);
    AES_set_encrypt_key(key_hex, 128, &aes);

    // 解密
    StrToHex(cipher_hex, cipher, 16);
    AES_ecb_encrypt(cipher_hex, plaintext, &aes, AES_DECRYPT);
    }
    9 条回复    2018-12-13 10:54:54 +08:00
    KomeijiSatori
        1
    KomeijiSatori  
       2018-11-23 19:54:10 +08:00
    感觉可能是 加密模式的问题(
    zbinlin
        2
    zbinlin  
       2018-11-23 19:57:32 +08:00
    最好把网站的链接,跟在网站上进行解密的相关字段贴出来
    rebackhua
        3
    rebackhua  
       2018-11-23 20:00:57 +08:00 via Android
    aes 也有不同的模式的,以及填充方式
    xiangyuecn
        4
    xiangyuecn  
       2018-11-23 20:31:09 +08:00
    AES 有个用来搞笑的 IV 这玩意,如果只保存密码,使用错误的 IV,哈哈,原文 123 可以解码成 456,而且这个错误结果还是合法的

    试验一下:





    #3 的填充方式也是个问题
    zbinlin
        5
    zbinlin  
       2018-11-23 20:46:15 +08:00
    @xiangyuecn 如果是楼主给出的代码,使用 ECB 模式,是不需要 IV 的。
    liuminghao233
        6
    liuminghao233  
       2018-11-23 20:46:27 +08:00 via iPhone
    @xiangyuecn 用 gcm 就好了
    xiangyuecn
        7
    xiangyuecn  
       2018-11-23 21:15:06 +08:00
    @zbinlin
    @liuminghao233
    嘿嘿,自从前端用了 CryptoJS,后端成了万年不变 CBC+PKCS7。刚研究了一下 ECB 凉凉

    补一个发现:IV 错了解码时候有时不能解码,间歇性的抽风,大部分时候还是能解码的只是结果是错的
    masterjoess
        8
    masterjoess  
       2018-11-23 21:47:02 +08:00
    你用的在线加密网站 AES 不标准
    给你两个没有 padding 参数的在线加密参考一下
    https://gchq.github.io/Cyber ​​ Chef/
    http://aes.online-domain-tools.com/
    mdlcw
        9
    mdlcw  
    OP
       2018-12-13 10:54:54 +08:00
    找到问题所在了,服务器加密用的 aes256 位,规范文档写的 aes128,太坑了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5919 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 02:10 · PVG 10:10 · LAX 18:10 · JFK 21:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.