@@ -27,46 +27,53 @@ def decrypt(self, encrypted) -> str:
27
27
class ECBCipher (BaseCipher ):
28
28
29
29
def encrypt (self , text ):
30
- encryptor = Cipher (algorithms .AES (self .key ), modes .ECB (), default_backend ()).encryptor ()
30
+ encryptor = Cipher (algorithms .AES (self .key ),
31
+ modes .ECB (), default_backend ()).encryptor ()
31
32
padder = padding .PKCS7 (algorithms .AES (self .key ).block_size ).padder ()
32
33
padded_data = padder .update (force_bytes (text )) + padder .finalize ()
33
34
encrypted_text = encryptor .update (padded_data ) + encryptor .finalize ()
34
35
return force_str (base64 .urlsafe_b64encode (encrypted_text ))
35
36
36
37
def decrypt (self , encrypted ):
37
- decryptor = Cipher (algorithms .AES (self .key ), modes .ECB (), default_backend ()).decryptor ()
38
+ decryptor = Cipher (algorithms .AES (self .key ),
39
+ modes .ECB (), default_backend ()).decryptor ()
38
40
padder = padding .PKCS7 (algorithms .AES (self .key ).block_size ).unpadder ()
39
41
decrypted_text = decryptor .update (base64 .urlsafe_b64decode (encrypted ))
40
42
unpadded_text = padder .update (decrypted_text ) + padder .finalize ()
41
43
return force_str (unpadded_text )
42
44
45
+
43
46
class CBCCipher (BaseCipher ):
44
47
45
48
def encrypt (self , text ) -> str :
46
- encryptor = Cipher (algorithms .AES (self .key ), modes .CBC (self .iv ), default_backend ()).encryptor ()
49
+ encryptor = Cipher (algorithms .AES (self .key ), modes .CBC (
50
+ self .iv ), default_backend ()).encryptor ()
47
51
padder = padding .PKCS7 (algorithms .AES (self .key ).block_size ).padder ()
48
52
padded_data = padder .update (force_bytes (text )) + padder .finalize ()
49
53
encrypted_text = encryptor .update (padded_data ) + encryptor .finalize ()
50
54
return force_str (base64 .urlsafe_b64encode (encrypted_text ))
51
55
52
56
def decrypt (self , encrypted ) -> str :
53
- decryptor = Cipher (algorithms .AES (self .key ), modes .CBC (self .iv ), default_backend ()).decryptor ()
57
+ decryptor = Cipher (algorithms .AES (self .key ), modes .CBC (
58
+ self .iv ), default_backend ()).decryptor ()
54
59
padder = padding .PKCS7 (algorithms .AES (self .key ).block_size ).unpadder ()
55
60
decrypted_text = decryptor .update (base64 .urlsafe_b64decode (encrypted ))
56
61
unpadded_text = padder .update (decrypted_text ) + padder .finalize ()
57
62
return force_str (unpadded_text )
58
63
64
+
59
65
class Crypto :
60
66
61
67
def __init__ (self , key = None , mode = None , iv = None ):
62
- if key is None :
63
- key = getattr (settings , "MIRAGE_SECRET_KEY" , None ) or getattr (settings , "SECRET_KEY" )
68
+ if not key :
69
+ key = getattr (settings , "MIRAGE_SECRET_KEY" ,
70
+ None ) or getattr (settings , "SECRET_KEY" )
64
71
assert len (key ) >= 32 , SHORT_SECRET_KEY
65
72
key = base64 .urlsafe_b64encode (force_bytes (key ))[:32 ]
66
73
if mode is None :
67
74
mode = getattr (settings , "MIRAGE_CIPHER_MODE" , "ECB" )
68
75
if iv is None :
69
- iv = getattr (settings , "MIRAGE_CIPHER_IV" , "1234567890abcdef" )
76
+ iv = getattr (settings , "MIRAGE_CIPHER_IV" , "1234567890abcdef" )
70
77
self .cipher = eval (f"{ mode } Cipher" )(key = key , iv = force_bytes (iv ))
71
78
72
79
def encrypt (self , text ):
0 commit comments