Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

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, PackedByteArray key, PackedByteArray iv=PackedByteArray() )

PackedByteArray

update ( PackedByteArray src )


枚举

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 状态(调用 update 时会更新 IV)。通常不需要此函数。

注意:仅当上下文以 MODE_CBC_ENCRYPTMODE_CBC_DECRYPT 开头时,此函数才有意义。


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

在给定的 mode 中启动 AES 上下文。必须始终提供 16 或 32 字节的 key,而仅当 modeMODE_CBC_ENCRYPTMODE_CBC_DECRYPT 时,才需要正好为 16 字节的 iv(初始化向量)。


PackedByteArray update ( PackedByteArray src )

运行此 AES 上下文所需的操作。将返回包含加密(或解密)给定 src 结果的 PackedByteArray 。有关操作模式,请参阅 start

注意:src 的大小必须是 16 倍的倍数。如果需要,应用一些填充。