Я использую криптографию в 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 также и это работает нормально даже с тем же ключом, предоставленным выше. Я не знаю, как справиться с этой ошибкой. пожалуйста, помогите мне!

Вернуться на верх