[PYTHON] Effectuer le cryptage AES avec DJango

Installation de la bibliothèque

$ pip install pycryptodome $ pip install pycryptodomex

Répertoriez la clé dans settings.py

$ vim settings.py
#Cryptage AES
try:
   from .aes_key import *
except ImportError:
   AES_KEY='oDZC5a6rhyukFmKCbPS6M45TFROLmrlB'
$ vim aes_key.py
AES_KEY='dMchLlLllvrDtQUxXDLpAWr2v1EdjuLU'

Vérification

$ python manage.py shell
from project.settings import *
print(AES_KEY)

Créer une classe de chiffrement

import base64
import hashlib
from Crypto import Random
from Crypto.Cipher import AES
from Crypto.Util import Padding


class AESCipher(object):
   def __init__(self, key):
       self.key = (hashlib.md5(key.encode('utf-8')).hexdigest()).encode('utf-8')

   def encrypt(self, raw):
       iv = Random.get_random_bytes(AES.block_size)
       cipher = AES.new(self.key, AES.MODE_CBC, iv)
       data = Padding.pad(raw.encode('utf-8'), AES.block_size, 'pkcs7')
       return base64.b64encode(iv + cipher.encrypt(data)).decode('utf-8')

   def decrypt(self, enc):
       enc = base64.b64decode(enc.encode('utf-8'))
       iv = enc[:AES.block_size]
       cipher = AES.new(self.key, AES.MODE_CBC, iv)
       data = Padding.unpad(cipher.decrypt(enc[AES.block_size:]), AES.block_size, 'pkcs7')
       return data.decode('utf-8')

appel

import random
import string
from project.lib.cipher import AESCipher

raw_text = 'Bonjour'

key = 'y6lLepZQpppdzjkeG5MhUaaaRCychpDd'
print('key:' + key)

cipher = AESCipher(key)

encrypted_text = cipher.encrypt(raw_text)
print(encrypted_text)

decrypted_text = cipher.decrypt(encrypted_text)
print(decrypted_text)

Recommended Posts

Effectuer le cryptage AES avec DJango
Faites Django avec CodeStar (Python3.6.8, Django2.2.9)
Faites Django avec CodeStar (Python3.8, Django2.1.15)
Comment effectuer un traitement arithmétique avec le modèle Django
Internationalisation avec Django
CRUD avec Django
Django 1.11 a démarré avec Python3.6
Résumé du développement avec Django
Sortie PDF avec Django
Sortie Markdown avec Django
Utiliser Gentelella avec Django
À propos du cryptage de texte (cryptage AES)
Twitter OAuth avec Django
Premiers pas avec Django 1
Envoyer des e-mails avec Django
Utilisez LESS avec Django
La mutualisation mécanise avec Django
Utiliser MySQL avec Django
Que fait le rendu de Django
Django à partir d'aujourd'hui
Premiers pas avec Django 2
Choses à faire lorsque vous commencez à développer avec Django
Lancez-vous avec Django! ~ Tutoriel ⑤ ~
Wai "Django peut-il REJOINDRE?"
Environnement de site Web de configuration minimale avec django
Créer une API avec Django
Déployer Django sans serveur avec Lambda
Python3 + Django ~ Mac ~ avec Apache
Créer une page d'accueil avec django
Lancez-vous avec Django! ~ Tutoriel ④ ~
Premiers pas avec Python Django (4)
Créer une application Web avec Django
Premiers pas avec Python Django (3)
Combinez Fast API avec Django ORM
Lancez-vous avec Django! ~ Tutoriel ⑥ ~
Utilisez Django pour enregistrer les données de tweet
Faisons R-CNN avec Sklearn-theano
Introduction à Python Django (6)
Combinez deux images avec Django
Premiers pas avec Django avec PyCharm
Web en temps réel avec les chaînes Django
Suppression de double envoi avec Django
Pas de cryptage AES Salt en Python
Framework Django REST avec Vue.js
Utilisez prefetch_related commodément avec Django
Premiers pas avec Python Django (5)
Connectez-vous avec Django Rest Framework
Qiita API Oauth avec Django
Faites quelque chose comme fuzzing avec acceptableRegex.py
Crypter / décrypter avec la commande GPG
Faites du SSH en plusieurs étapes avec Fabric
[Astuces] Comment étendre le modèle lors de la création de HTML avec django
Développement piloté par les tests avec Django Partie 3
recharger dans le shell django avec ipython
Ne changez pas avec pyenv global!
Étapes pour développer Django avec VSCode
Développement piloté par les tests avec Django Partie 4
Charger les modules Django avec un interpréteur
Configurer la connexion sociale avec Django
Développement piloté par les tests avec Django Partie 6
Mesurer la couverture des applications Django avec Coverage.py