ValueError:对于AES,在python 2.7中解密加密数据时,输入字符串必须是长度为16的倍数

时间:2015-06-24 13:24:47

标签: python encryption cryptography aes

我需要帮助! 我在我的python项目中使用AES进行数据加密。使用下面名为encrypt的方法我可以加密数据。这种方法有效,我可以将加密数据保存在数据库中。我使用mongodb。 我的问题是当我尝试解密这些数据时.Below写了一个查询。我测试它以json格式返回数据。

patient_data = mongo.db.patients.find_one({'_id': doc_id})
doc = decrypt(patient_data)

参数patient_data是一个json。当我使用解密方法并运行我的项目时,我有以下错误:

Error

我添加了代码,我如何进行AES加密/解密

key=b'\xbf\xc0\x85)\x10nc\x94\x02)j\xdf\xcb\xc4\x94\x9d(\x9e[EX\xc8\xd5\xbfI{\xa2$\x05(\xd5\x18'
    cipher = AES.new(key)

    def pad(s):
        return s + ((16-len(s) % 16) * '{')

    def encrypt(patient_data):
        global cipher
        for d in patient_data:
            encoded=cipher.encrypt(pad(patient_data[d]))
            encoded = b64encode(encoded) 
            patient_data_encrypted = patient_data
            patient_data_encrypted[d] = encoded
            # decode the encoded string
        return patient_data_encrypted

    def decrypt(patient_data):
        global cipher
        for d in patient_data:
            patient_data = b64decode(patient_data[d])
            dec = cipher.decrypt(patient_data).decode('utf8')
            l = dec.count('{')
            decoded = dec[:len(dec)-l]
            patient_data_dencrypted = patient_data
            patient_data_dencrypted[d] = decoded
        return patient_data_dencrypted


  [1]: http://i.stack.imgur.com/Mj4VL.png

0 个答案:

没有答案