Jolly23
V2EX  ›  问与答

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

  •  
  •   Jolly23 · Mar 13, 2017 · 4059 views
    This topic created in 3522 days ago, the information mentioned may be changed or developed.

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

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

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

    可以参考下
    aec4d
    aec4d
    Mar 13, 2017❤️1
    3
    写不出来是因为你缺少加解密的基本常识, AES 属于块加密, iv 是初始向量。块加密的密匙长度, iv 长度,密文长度都是固定 16 的倍数,很明显, iv 和密匙都容易满足要求。因为密文是变长的。不满足 16 的倍数。所以通过各种 padding 算法将它扩展为 16 的倍长, AES 解密之后再进行反向 padding 就得到原文了。你上面说的 NoPadding 就肯定了密文长度是 16 位的倍数,只要别人告诉了你 AES/CBC/NoPadding ,不用参照 java 代码也能写出解密代码出来
    只会 C-c,C-v 你这次搞定了 下次遇到相同的问题一样写不了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4979 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 09:10 · PVG 17:10 · LAX 01:10 · JFK 04:10
    ♥ Do have faith in what you're doing.