AES-шифрование в Perl 6? - PullRequest
       6

AES-шифрование в Perl 6?

0 голосов
/ 01 января 2019

Я пытаюсь преобразовать модуль написания на Python в Perl 6, я обнаружил, что в Perl 6 нет метода AES :

from Cryptodome.Cipher import AES
import base64

def aes(text, key):
    pad = 16 - len(text) % 16
    text = text + bytearray([pad] * pad)
    encryptor = AES.new(key, 2, b"0102030405060708")
    ciphertext = encryptor.encrypt(text)
    return base64.b64encode(ciphertext)

Есть ли модуль записиВ Perl 6 реализован метод AES ?

1 Ответ

0 голосов
/ 01 января 2019

Кажется, что модуль OpenSSL обеспечивает доступ к различным шифрам AES.Это зависит от доступности библиотеки openssl (хотя в Windows я полагаю, что она загружает DLL как часть процесса установки модуля).

После установки (zef install OpenSSL) можно:

use OpenSSL::CryptTools;

А затем используйте encrypt / decrypt:

# Fake IV and key
my $iv = ('0' x 16).encode;
my $key = ('xy' x 16).encode;

# Encrypt.
my $ciphertext = encrypt("asdf".encode, :aes256, :$iv, :$key);
say $ciphertext;

# Decrypt.
say decrypt($ciphertext, :aes256, :$iv, :$key).decode;

См. эти тесты для дополнительных примеров.

...