3

所以这是我的解密功能:

def decrypt(value):
    key = b'1111111111111111'

    cipher = AES.new(key, AES.MODE_ECB)
    msg = cipher.decrypt(base64.b64decode(value))

    return msg

而且我认为我在这里遗漏了一些东西,因为当我给它一个字符串来解密它时,它还会添加一些奇怪的字符:

例子 :hey\r\r\r\r\r\r\r\r\r\r\r\r\r

我究竟做错了什么?

PS我正在使用谷歌应用引擎和这个库from Crypto.Cipher import AES

编辑 :

private static final String ALGO = "AES";
private static final byte[] keyValue = new byte[] { '1', '1', '1', '1', '1', '1', '1', '1', '1','1', '1', '1','1','1','1','1' };

public static String encrypt(String Data) throws Exception {
        Key key = generateKey();
        Cipher c = Cipher.getInstance(ALGO);
        c.init(Cipher.ENCRYPT_MODE, key);
        byte[] encVal = c.doFinal(Data.getBytes());
     //   String encryptedValue = new BASE64Encoder().encode(encVal);

        byte[] decoded = Base64.encodeBase64(encVal);

        return (new String(decoded, "UTF-8") + "\n");
    }

private static Key generateKey() throws Exception {
        Key key = new SecretKeySpec(keyValue, ALGO);
        return key;
    }
4

3 回答 3

0

我的不好,我没有足够的寻找答案

这是答案的链接:Encrypt & Decrypt using PyCrypto AES 256

不管怎么说,还是要谢谢你

于 2013-06-20T19:48:48.383 回答
0

怎么样

return msg.strip()

这将摆脱所有那些\r

于 2013-06-20T19:13:42.747 回答
0

由于 Java 默认"PKCS#5Padding"情况下,假设您必须处理那些填充字节(一个到块大小 - 在这种情况下为 16 -总是填充字节)是非常安全的。Java"PKCS#5Padding"填充模式实际上是 PKCS#7 填充,因为 PKCS#5 仅指定 8 字节块的填充(例如 DES 模式加密)。

所以这意味着您必须寻找 PKCS#5 填充或 PKCS#7 填充。快速搜索显示此答案

于 2013-06-22T19:35:05.957 回答