V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Jolly23
V2EX  ›  问与答

请问 Python 的 AES 模块,怎么实现 Java 中的 AES/CBC/NoPadding 模式?

  •  
  •   Jolly23 · 2017-03-13 14:07:29 +08:00 · 3212 次点击
    这是一个创建于 2591 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Java 示例( Java 加解密): http://weixiao.qq.com/img/campus_card/identification_scheme.pdf

    找了很久没找到 python 的写法,需要和 Java 输出同样的结果,该怎么写?

    4 条回复    2017-03-14 07:29:52 +08:00
    ryd994
        1
    ryd994  
       2017-03-13 14:21:44 +08:00 via Android
    如果有随机 IV 的话, Java 自己也未必是固定的输出
    你不用管密文一不一样,能按这个模式解密就行
    srs5525220
        2
    srs5525220  
       2017-03-13 15:11:07 +08:00
    我写过用于 iOS 的
    http://www.jianshu.com/p/3483a9d1f0a6

    可以参考下
    aec4d
        3
    aec4d  
       2017-03-13 16:31:06 +08:00   ❤️ 1
    写不出来是因为你缺少加解密的基本常识, AES 属于块加密, iv 是初始向量。块加密的密匙长度, iv 长度,密文长度都是固定 16 的倍数,很明显, iv 和密匙都容易满足要求。因为密文是变长的。不满足 16 的倍数。所以通过各种 padding 算法将它扩展为 16 的倍长, AES 解密之后再进行反向 padding 就得到原文了。你上面说的 NoPadding 就肯定了密文长度是 16 位的倍数,只要别人告诉了你 AES/CBC/NoPadding ,不用参照 java 代码也能写出解密代码出来
    只会 C-c,C-v 你这次搞定了 下次遇到相同的问题一样写不了
    czb
        4
    czb  
       2017-03-14 07:29:52 +08:00 via Android
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1002 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 22:20 · PVG 06:20 · LAX 15:20 · JFK 18:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.