Шифрование Rijndael в python

1

Я хочу использовать шифрование Rijndael с ключом и размером 256 бит в python, а заполнение должно быть PKCS7. либо с кодировкой utf-8. Я много искал и, наконец, написал этот код, я не знаю, что это хороший способ, но все, что я знаю. при запуске кода я получил эту ошибку:

Traceback (most recent call last):
File "testForRijndael.py", line 1, in <module>
  from rijndael.cipher import crypt
File "/opt/odoo/odoo11-venv/lib/python3.6/site- 
  packages/rijndael/cipher/crypt.py", line 1, in <module>
  from rijndael.cipher.blockcipher import *
File "/opt/odoo/odoo11-venv/lib/python3.6/site- 
  packages/rijndael/cipher/blockcipher.py", line 64
    raise Exception,"the IV length should be %i bytes"%self.blocksize
               ^
SyntaxError: invalid syntax

Если кто-нибудь может мне помочь, я буду признателен ему

Это мой код:

from rijndael.cipher import crypt
from rijndael.cipher.blockcipher import MODE_CBC
from pkcs7 import PKCS7Encoder


class Rijndael():
    def __init__(self, key, iv):
       self.KEY = key
       self.IV = iv
       self.BLOCKSIZE = 32

   def encrypt(self, plain_text):
        rjn = crypt.new(self.KEY, MODE_CBC , self.IV, 
blocksize=self.BLOCKSIZE)
        pad_text = PKCS7Encoder.encode(plain_text)
        return rjn.encrypt(pad_text).encode()

   def decrypt(self, cipher_text):
       rjn = crypt.new(self.KEY, MODE_CBC , self.IV, 
                       blocksize=self.BLOCKSIZE)
       cipher_text = cipher_text.decode()
       return rjn.decrypt(cipher_text)


  r = Rijndael('abcdefghijklmnopqrstuvwxyz123456', 
  'abcdefghijklmnopqrstuvwxyzgh3456')
  test_text = "this is a test :)"
  encrypt = r.encrypt(test_text)
  decrypt = r.decrypt(encrypt)
  print(test_text)
  print(encrypt)
  print(decrypt)
Теги:
encryption
aes
rijndael

1 ответ

1

Библиотека rijndael которую вы импортируете, написана для python 2, но вы используете ее с python 3. См. Ниже синтаксис, который работает в python 2, но не python 3.

$ cat raise.py
  raise Exception,"text"
$ python2 raise.py
Traceback (most recent call last):
  File "raise.py", line 1, in <module>
    raise Exception,"text"
Exception: text
$ python3 raise.py
  File "raise.py", line 1
    raise Exception,"text"
                   ^
SyntaxError: invalid syntax

Вы можете попытаться перенести его самостоятельно, используя инструмент 2to3, посмотрите, кто-то написал порт, или напишите и выполните свою программу с помощью python 2.

Попробуйте pip2 install rijndael а затем python2 testForRijndael.py.

Чтобы запустить 2to3 в локальном коде (не рекомендуется, но он может работать), запустите 2to3 -w/opt/odoo/odoo11-venv/lib/python3.6/site-packages/rijndael/**/*.py

  • 0
    Я должен запустить свой код с python 3. Есть ли библиотека rijndael для python3? Я гуглю это, но ничего не нахожу, Кажется, нет никакой библиотеки для python3 :(

Ещё вопросы

Сообщество Overcoder
Наверх
Меню