AESContext

Наследует: RefCounted < Object

Предоставляет доступ к шифрованию/дешифрованию необработанных данных по алгоритму AES.

Описание

Этот класс содержит контекстную информацию, необходимую для операций шифрования и дешифрования с помощью AES (Advanced Encryption Standard). Поддерживаются режимы AES-ECB и AES-CBC.

extends Node

var aes = AESContext.new()

func _ready():
    var key = "My secret key!!!" # Ключ должен быть длиной 16 или 32 байта.
    var data = "My secret text!!" # Размер данных должен быть кратен 16 байтам, при необходимости используйте заполнение.
    # Зашифровать ECB
    aes.start(AESContext.MODE_ECB_ENCRYPT, key.to_utf8_buffer())
    var encrypted = aes.update(data.to_utf8_buffer())
    aes.finish()
    # Расшифровать ECB
    aes.start(AESContext.MODE_ECB_DECRYPT, key.to_utf8_buffer())
    var decrypted = aes.update(encrypted)
    aes.finish()
    # Проверить ECB
    assert(decrypted == data.to_utf8_buffer())

    var iv = "My secret iv!!!!" # IV должен состоять ровно из 16 байт.
    # Зашифровать CBC
    aes.start(AESContext.MODE_CBC_ENCRYPT, key.to_utf8_buffer(), iv.to_utf8_buffer())
    encrypted = aes.update(data.to_utf8_buffer())
    aes.finish()
    # Расшифровать CBC
    aes.start(AESContext.MODE_CBC_DECRYPT, key.to_utf8_buffer(), iv.to_utf8_buffer())
    decrypted = aes.update(encrypted)
    aes.finish()
    # Проверить CBC
    assert(decrypted == data.to_utf8_buffer())

Методы

void

finish()

PackedByteArray

get_iv_state()

Error

start(mode: Mode, key: PackedByteArray, iv: PackedByteArray = PackedByteArray())

PackedByteArray

update(src: PackedByteArray)


Перечисления

enum Mode: 🔗

Mode MODE_ECB_ENCRYPT = 0

AES режим шифрования электронной кодовой книги.

Mode MODE_ECB_DECRYPT = 1

AES режим дешифрования электронной кодовой книги.

Mode MODE_CBC_ENCRYPT = 2

Режим шифрования с использованием цепочки блоков AES.

Mode MODE_CBC_DECRYPT = 3

Режим дешифрования с использованием цепочки блоков шифрования AES.

Mode MODE_MAX = 4

Максимальное значение для режима перечисления.


Описания метода

void finish() 🔗

Закрыть данный AES-контекст, чтобы его можно было запустить заново. См. раздел start().


PackedByteArray get_iv_state() 🔗

Получить текущее IV состояние для данного контекста (IV обновляется при вызове update()). Обычно эта функция вам не нужна.

Примечание: Эта функция имеет смысл только тогда, когда контекст запущен с MODE_CBC_ENCRYPT или MODE_CBC_DECRYPT.


Error start(mode: Mode, key: PackedByteArray, iv: PackedByteArray = PackedByteArray()) 🔗

Запустите контекст AES в заданном mode. Всегда должен быть указан key из 16 или 32 байт, тогда как iv (вектор инициализации) из ровно 16 байт требуется только тогда, когда mode равен MODE_CBC_ENCRYPT или MODE_CBC_DECRYPT.


PackedByteArray update(src: PackedByteArray) 🔗

Выполнить нужную операцию для этого контекста AES. Вернет PackedByteArray, содержащий результат шифрования (или расшифровки) указанного src. См. start() для режима работы.

Примечание: Размер src должен быть кратен 16. При необходимости примените некоторое заполнение.