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.
Checking the stable version of the documentation...
AESContext
Hereda: RefCounted < Object
Proporciona acceso al cifrado/descifrado AES de datos sin procesar.
Descripción
Esta clase contiene la información de contexto necesaria para las operaciones de cifrado y descifrado con AES (Estándar de Cifrado Avanzado). Se admiten los modos AES-ECB y AES-CBC.
extends Node
var aes = AESContext.new()
func _ready():
var key = "¡¡¡Mi clave secreta!!!" # La clave debe tener 16 o 32 bytes.
var data = "¡¡¡Mi clave secreta!!!" # El tamaño de los datos debe ser múltiplo de 16 bytes, y aplicar relleno si es necesario.
# Encrypt ECB
aes.start(AESContext.MODE_ECB_ENCRYPT, key.to_utf8_buffer())
var encrypted = aes.update(data.to_utf8_buffer())
aes.finish()
# Decrypt ECB
aes.start(AESContext.MODE_ECB_DECRYPT, key.to_utf8_buffer())
var decrypted = aes.update(encrypted)
aes.finish()
# Check ECB
assert(decrypted == data.to_utf8_buffer())
var iv = "¡¡¡Mi IV secreto!!!" # El IV debe tener exactamente 16 bytes.
# Encrypt CBC
aes.start(AESContext.MODE_CBC_ENCRYPT, key.to_utf8_buffer(), iv.to_utf8_buffer())
encrypted = aes.update(data.to_utf8_buffer())
aes.finish()
# Decrypt CBC
aes.start(AESContext.MODE_CBC_DECRYPT, key.to_utf8_buffer(), iv.to_utf8_buffer())
decrypted = aes.update(encrypted)
aes.finish()
# Check CBC
assert(decrypted == data.to_utf8_buffer())
using Godot;
using System.Diagnostics;
public partial class MyNode : Node
{
private AesContext _aes = new AesContext();
public override void _Ready()
{
string key = "¡¡¡Mi clave secreta!!!"; // La clave debe tener 16 o 32 bytes.
string data = "¡¡Mi clave secreta!!"; // El tamaño de los datos debe ser múltiplo de 16 bytes, y aplicar relleno si es necesario.
// Encrypt ECB
_aes.Start(AesContext.Mode.EcbEncrypt, key.ToUtf8Buffer());
byte[] encrypted = _aes.Update(data.ToUtf8Buffer());
_aes.Finish();
// Decrypt ECB
_aes.Start(AesContext.Mode.EcbDecrypt, key.ToUtf8Buffer());
byte[] decrypted = _aes.Update(encrypted);
_aes.Finish();
// Check ECB
Debug.Assert(decrypted == data.ToUtf8Buffer());
string iv = "¡¡¡¡Mi IV secreto!!!!"; // El IV debe tener exactamente 16 bytes.
// Encrypt CBC
_aes.Start(AesContext.Mode.EcbEncrypt, key.ToUtf8Buffer(), iv.ToUtf8Buffer());
encrypted = _aes.Update(data.ToUtf8Buffer());
_aes.Finish();
// Decrypt CBC
_aes.Start(AesContext.Mode.EcbDecrypt, key.ToUtf8Buffer(), iv.ToUtf8Buffer());
decrypted = _aes.Update(encrypted);
_aes.Finish();
// Check CBC
Debug.Assert(decrypted == data.ToUtf8Buffer());
}
}
Métodos
void |
finish() |
start(mode: Mode, key: PackedByteArray, iv: PackedByteArray = PackedByteArray()) |
|
update(src: PackedByteArray) |
Enumeraciones
enum Mode: 🔗
Mode MODE_ECB_ENCRYPT = 0
Modo de cifrado ECB (Electronic Codebook) de AES.
Mode MODE_ECB_DECRYPT = 1
Modo de desencripción AES electronic codebook(ECB).
Mode MODE_CBC_ENCRYPT = 2
Modo de cifrado AES en encadenamiento de bloques (CBC).
Mode MODE_CBC_DECRYPT = 3
Modo de descifrado AES en encadenamiento de bloques (CBC).
Mode MODE_MAX = 4
Valor máximo para el modo enum.
Descripciones de Métodos
void finish() 🔗
Cerrar este contexto AES para que pueda ser iniciado de nuevo. Véase start().
PackedByteArray get_iv_state() 🔗
Obtiene el estado actual de IV para este contexto (la IV se actualiza al llamar a update()). Normalmente no necesitas esta función.
Nota: Esta función solo tiene sentido cuando el contexto se inicia con MODE_CBC_ENCRYPT o MODE_CBC_DECRYPT.
Error start(mode: Mode, key: PackedByteArray, iv: PackedByteArray = PackedByteArray()) 🔗
Inicia el contexto AES en el mode dado. Siempre se debe proporcionar una key de 16 o 32 bytes, mientras que una iv (vector de inicialización) de exactamente 16 bytes, solo se necesita cuando mode es MODE_CBC_ENCRYPT o MODE_CBC_DECRYPT.
PackedByteArray update(src: PackedByteArray) 🔗
Ejecuta la operación deseada para este contexto AES. Devolverá un PackedByteArray que contiene el resultado de cifrar (o descifrar) la src dada. Véase start() para el modo de operación.
Nota: El tamaño de src debe ser un múltiplo de 16. Aplica algún relleno si es necesario.