Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

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 cipher block chaining encryption mode.

Mode MODE_CBC_DECRYPT = 3

AES cipher block chaining decryption mode.

Mode MODE_MAX = 4

模式列舉的最大值。


方法說明

void finish() 🔗

關閉此 AES 本文,以便可以再次啟動它。見 start()


PackedByteArray get_iv_state() 🔗

獲取此本文的目前 IV 狀態(呼叫 update() 時會更新 IV)。通常不需要此函式。

注意:僅當本文以 MODE_CBC_ENCRYPTMODE_CBC_DECRYPT 開頭時,此函式才有意義。


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

在給定的 mode 中啟動 AES 本文。必須始終提供 16 或 32 位元組的 key,而僅當 modeMODE_CBC_ENCRYPTMODE_CBC_DECRYPT 時,才需要正好為 16 位元組的 iv(初始化向量)。


PackedByteArray update(src: PackedByteArray) 🔗

運作此 AES 本文所需的操作。將返回包含加密(或解密)給定 src 結果的 PackedByteArray 。有關操作模式,請參閱 start()

注意:src 的大小必須是 16 倍的倍數。如果需要,套用一些填充。