当前位置: 首页 > 知识库问答 >
问题:

Python解密留下不需要的字符后[重复]

柳坚白
2023-03-14

这是我的解密函数:

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

我做错了什么?

P. S.我使用谷歌应用程序引擎和这个库从Crypto.密码导入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;
    }

共有3个答案

祁默
2023-03-14

由于Java默认为“PKCS#5Padding”,因此可以很安全地假设您必须处理这些填充字节(一到块大小-在本例中为16-字节总是被填充)。Java“PKCS#5Padding”填充模式实际上是PKCS#7填充,因为PKCS#5只指定8字节块的填充(例如DES模式加密)。

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

梁嘉祥
2023-03-14

我的错是我没有找到足够的答案

这里有一个链接,答案是:加密

还是谢了

阙项禹
2023-03-14

就这么做怎么样

return msg.strip()

这将摆脱所有\r的

 类似资料:
  • 问题内容: 我们正在使用bcrypt来存储不需要解密的密码和数据。 应该采取什么措施来保护其他这样做的用户信息。对于此示例,假设我们不希望用户的真实姓名采用纯文本格式,以防有人获取数据库。 这是一些敏感数据,但还需要不时调用并以纯文本显示。有没有简单的方法可以做到这一点? 问题答案: 您可以使用crypto模块: 编辑 现在 createCipher 和 createDecipher 已被弃用,而

  • 问题 你想去掉文本字符串开头,结尾或者中间不想要的字符,比如空白。 解决方案 strip() 方法能用于删除开始或结尾的字符。 lstrip() 和 rstrip() 分别从左和从右执行删除操作。 默认情况下,这些方法会去除空白字符,但是你也可以指定其他字符。比如: >>> # Whitespace stripping >>> s = ' hello world \n' >>> s.strip()

  • 问题内容: 我在PHP中有一个函数,可按如下所示加密文本: 如何在Python中解密这些值? 问题答案: 要解密这种加密形式,您将需要获得Rijndael版本。在这里可以找到一个。然后,您将需要模拟PHP Mcrypt模块中使用的键和文本填充。它们增加了填充文本和键的正确大小。他们使用的是256位块大小,并且您提供的密钥使用的密钥大小为128(如果您提供更大的密钥,则密钥大小可能会增加)。不幸的是

  • 问题内容: 我正在尝试解密从后端服务器收到的字符串,该后端服务器使用OpenSSL使用AES-256-CBC对字符串进行加密。有代码块: 不幸的是,当我到达 声明抛出以下异常: 有任何想法吗? 问题答案: 您应该在方法开始时对字符串进行 解码 ,而不是对字符串的平台特定表示进行编码。 或更确切地说: 如果您正确命名变量。 通常,每次(感觉像您必须使用)方法或构造函数时,您可能都会做错事情。你应该先

  • 被删除,因此也是另一个匹配字符串的一部分,不确定这是由于错误的regEx还是反字符类的错误应用。