Я использую криптографию в django, и проблема заключается в том, что "она не расшифровывает значение при использовании функции "from_db_value"".
settings.py:
ENCRYPTION_KEY=b'iHHJ-OlINvt7Ez7-js9JiAAy2I_hFJXWYhi8yIJZPCs='
models.py:
from django.db import models
from .fields import EncryptedTextField
class all_License(models.Model):
Lic_Id= models.IntegerField(primary_key=True, auto_created=True)
LicenseKey= EncryptedTextField()
ProductID= models.ForeignKey(Products, on_delete=models.CASCADE)
ClientID= models.ForeignKey(Clients, on_delete=models.CASCADE)
ActivationStatus= models.BooleanField()
ExpirationDate= models.DateField()
IssuedDate= models.DateField()
AssociatedDeviceID= models.IntegerField()
AdditionalText= models.TextField()
fields.py:
from cryptography.fernet import Fernet, InvalidToken
from django.db import models
from django.conf import settings
import base64
class EncryptedTextField(models.TextField):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.cipher_suite = Fernet(settings.ENCRYPTION_KEY)
def get_prep_value(self, value):
cipher_text = self.cipher_suite.encrypt(value.encode('utf-8'))
return base64.urlsafe_b64encode(cipher_text).decode('utf-8')
def from_db_value(self, value, expression, connection):
decrypted_text = self.cipher_suite.decrypt(base64.urlsafe_b64decode(value))
print("hitesh")
Это просто дает мне "Invalid token" ошибка при расшифровке.Это просто дает ошибку в from_db_value funtion.Я попробовал это без django также и это работает нормально даже с тем же ключом, предоставленным выше. Я не знаю, как справиться с этой ошибкой. пожалуйста, помогите мне!