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

Я пытаюсь преобразовать модуль написания на 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

Кажется, что модуль 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;

Смотрите эти тесты для большего количества примеров.