[PYTHON] Führen Sie eine AES-Verschlüsselung mit DJango durch

Bibliotheksinstallation

$ pip install pycryptodome $ pip install pycryptodomex

Listen Sie den Schlüssel in settings.py auf

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

Bestätigung

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

Erstellen einer Verschlüsselungsklasse

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')

Anruf

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

raw_text = 'Hallo'

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

Führen Sie eine AES-Verschlüsselung mit DJango durch
Mach Django mit CodeStar (Python3.6.8, Django2.2.9)
Mach Django mit CodeStar (Python3.8, Django2.1.15)
So führen Sie eine arithmetische Verarbeitung mit der Django-Vorlage durch
Internationalisierung mit Django
CRUD mit Django
Django 1.11 wurde mit Python3.6 gestartet
Entwicklungsverdauung mit Django
PDF mit Django ausgeben
Markdown-Ausgabe mit Django
Verwenden Sie Gentelella mit Django
Informationen zur Textverschlüsselung (AES-Verschlüsselung)
Twitter OAuth mit Django
Erste Schritte mit Django 1
Mail mit Django senden
Verwenden Sie WENIGER mit Django
Pooling mechanisieren mit Django
Verwenden Sie MySQL mit Django
Was macht Djangos Rendering?
Django ab heute
Erste Schritte mit Django 2
Dinge zu tun, wenn Sie anfangen, sich mit Django zu entwickeln
Fangen Sie mit Django an! ~ Tutorial ⑤ ~
Wai "Kann Django mitmachen?"
Minimale Konfigurations-Website-Umgebung mit Django
Erstellen Sie eine API mit Django
Stellen Sie Django serverlos mit Lambda bereit
Python3 + Django ~ Mac ~ mit Apache
Erstellen Sie eine Homepage mit Django
Fangen Sie mit Django an! ~ Tutorial ④ ~
Erste Schritte mit Python Django (4)
Erstellen Sie eine Webanwendung mit Django
Erste Schritte mit Python Django (3)
Kombinieren Sie Fast API mit Django ORM
Fangen Sie mit Django an! ~ Tutorial ⑥ ~
Verwenden Sie Django, um Tweet-Daten zu speichern
Lassen Sie uns R-CNN mit Sklearn-theano machen
Einführung in Python Django (6)
Kombiniere zwei Bilder mit Django
Erste Schritte mit Django mit PyCharm
Echtzeit-Web mit Django-Kanälen
Doppelte Submit-Unterdrückung mit Django
Keine Salt-AES-Verschlüsselung in Python
Django REST Framework mit Vue.js
Verwenden Sie prefetch_related bequem mit Django
Erste Schritte mit Python Django (5)
Melden Sie sich mit dem Django Rest Framework an
Qiita API Oauth mit Django
Machen Sie so etwas wie Fuzzing mit acceptRegex.py
Mit dem GPG-Befehl verschlüsseln / entschlüsseln
Führen Sie mehrstufige SSH mit Fabric durch
[Tipps] Die Vorgehensweise beim Erstellen von HTML mit Django wird erweitert
Testgetriebene Entwicklung mit Django Teil 3
Laden Sie die Django-Shell mit ipython neu
Wechseln Sie nicht mit pyenv global!
Schritte zur Entwicklung von Django mit VSCode
Testgetriebene Entwicklung mit Django Teil 4
Laden Sie ein Django-Modul mit einem Interpreter
Richten Sie mit Django ein soziales Login ein
Testgetriebene Entwicklung mit Django Teil 6
Messen Sie die Abdeckung der Django-Anwendung mit Coverage.py