Попытка расшифровать сообщение, но getTypeError: не может соединить байты с - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь расшифровать зашифрованные данные, которые хранятся в базе данных, но получаю сообщение об ошибке типа: TypeError: невозможно объединить байты в str Это мой код:

    password = b'password shared between Alice and Bob'
    message = b"This is a message for Bob's eyes only"
    kdf = pwhash.argon2i.kdf
    salt = utils.random(pwhash.argon2i.SALTBYTES)
    ops = pwhash.argon2i.OPSLIMIT_SENSITIVE
    mem = pwhash.argon2i.MEMLIMIT_SENSITIVE

    key = kdf(secret.SecretBox.KEY_SIZE, password, salt,opslimit=ops, memlimit=mem)
    box = secret.SecretBox(key)
    nonce = utils.random(secret.SecretBox.NONCE_SIZE)
    encrypted = box.encrypt(message, nonce)

    sql = "INSERT INTO encrypted (datastored) VALUES (%s);"
    cur.execute(sql,(str(encrypted),))
    conn.commit()


    sql = "SELECT  datastored from  encrypted"
    cur.execute(sql)
    row_value = cur.fetchone()[0]

    key_for_decryption = kdf(secret.SecretBox.KEY_SIZE, password,salt, opslimit=ops, memlimit=mem)
    decryption_box = secret.SecretBox(key_for_decryption)
    received = decryption_box.decrypt(row_value)

1 Ответ

0 голосов
/ 03 июля 2018

Для двоичных данных, таких как зашифрованные или сжатые данные, необходимо хранить их в двоичном поле, например, типа bytea в Postgres.

Сохранение его в поле varchar будет означать, что некоторые байты, особенно с нулевым значением, вызовут потерю данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...