0
votes

Cryptographie Python - Données trop longues pour la taille de la clé

J'essaie de chiffrer mon message en utilisant un cryptage asymétrique. J'utilise l'algorithme SHA256. La taille de la clé est 2048 code>. Ceci est mon code: -

from cryptography.fernet import Fernet
key = Fernet.generate_key()
cipher_suite = Fernet(key)
cipher_text = cipher_suite.encrypt(MY_ABOVE_JSON_DUMPS_MESSAGE)
encrypted = self.public_key.encrypt(
                cipher_text,
                padding.OAEP(
                    mgf=padding.MGF1(algorithm=hashes.SHA256()),
                    algorithm=hashes.SHA256(),
                    label=None
                )
            )


1 commentaires

Paul a déjà donné la bonne réponse, mais je vais mettre davantage l'accent sur le fait que vous devez chiffrer la clé AES plutôt que le ciphertext. Le cryptage n'est pas une compression; Il ne rétrécira pas le message (les données que vous cryptez). La raison pour laquelle un Cryptosystème hybride est parce que vous protégeez d'abord les données avec une clé AES aléatoire, que vous protégeez ensuite à l'aide de la clé publique RSA.


3 Réponses :


-5
votes

Essayez de raccourcir votre message à l'aide d'un hachage alg. comme Sha256. Ensuite, essayez de chiffrer le message


2 commentaires

J'utilise une cryptographie asymétrique. Si j'utilise Sha Family, je ne pourrai pas la déchiffrer plus tard.


Ensuite, vous pouvez utiliser des fonctions RSA, trop crypté et déchiffrer



5
votes

La nature du Cryptosystème RSA est telle que vous ne pouvez pas chiffrer une valeur plus longue que le module (et, en fait, il doit être plus court pour pouvoir le crypter en toute sécurité lorsque la sécurité de la RSA est partiellement plane sur le rembourrage).

Si vous souhaitez chiffrer une charge utile plus grande, vous devez construire un système tel que vous chiffrer votre charge utile à l'aide d'un chiffrement symétrique (assurez-vous qu'il est en cryptage authentifié! cryptographie fournit une construction appelée FERNET qui peut Faites cela), puis chiffrez la clé symétrique à l'aide de votre clé publique RSA. Vous pouvez ensuite envoyer les deux ciphertextes au destinataire. Le destinataire peut déchiffrer la clé cryptée RSA à l'aide de la clé privée qu'ils détiennent et déchiffrent le plus grand chiffretext avec la clé résultante.

Si vous construisez ce système à partir de Scratch envisagez d'utiliser Ecies peut également atteindre ce type de capacité sans utiliser RSA.


0 commentaires

0
votes

La cryptographie asymétrique est une technique cryptographique lente, vous devez utiliser des AES ou son équivalent pour le faire, si vous souhaitez toujours atteindre la cryptographie clé publique. Cryptez les données à l'aide d'AES: Créez un objet avec l'en-tête sous forme d'accès à la touche AES et à AES Crypted Data en tant que charge utile ... seulement chiffrer la clé AES utilisant PKC.


0 commentaires