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
Eredita: RefCounted < Object
Fornisce l'accesso alla crittografia/decrittazione AES dei dati grezzi.
Descrizione
Questa classe contiene le informazioni di contesto necessarie per le operazioni di crittografia e decrittazione con AES (Advanced Encryption Standard). Entrambe le modalità AES-ECB e AES-CBC sono supportate.
extends Node
var aes = AESContext.new()
func _ready():
var key = "My secret key!!!" # La chiave deve essere 16 o 32 byte.
var data = "My secret text!!" # La dimensione dei dati deve essere un multiplo di 16 byte, imbottisci se necessario.
# Cripta ECB
aes.start(AESContext.MODE_ECB_ENCRYPT, key.to_utf8_buffer())
var encrypted = aes.update(data.to_utf8_buffer())
aes.finish()
# Decripta ECB
aes.start(AESContext.MODE_ECB_DECRYPT, key.to_utf8_buffer())
var decrypted = aes.update(encrypted)
aes.finish()
# Verifica ECB
assert(decrypted == data.to_utf8_buffer())
var iv = "My secret iv!!!!" # IV deve essere esattamente 16 byte.
# Cripta CBC
aes.start(AESContext.MODE_CBC_ENCRYPT, key.to_utf8_buffer(), iv.to_utf8_buffer())
encrypted = aes.update(data.to_utf8_buffer())
aes.finish()
# Decripta CBC
aes.start(AESContext.MODE_CBC_DECRYPT, key.to_utf8_buffer(), iv.to_utf8_buffer())
decrypted = aes.update(encrypted)
aes.finish()
# Verifica 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 = "My secret key!!!"; // La chiave deve essere 16 o 32 byte.
string data = "My secret text!!"; // La dimensione dei dati deve essere un multiplo di 16 byte, imbottisci se necessario.
// Cripta ECB
_aes.Start(AesContext.Mode.EcbEncrypt, key.ToUtf8Buffer());
byte[] encrypted = _aes.Update(data.ToUtf8Buffer());
_aes.Finish();
// Decripta ECB
_aes.Start(AesContext.Mode.EcbDecrypt, key.ToUtf8Buffer());
byte[] decrypted = _aes.Update(encrypted);
_aes.Finish();
// Verifica CBC
Debug.Assert(decrypted == data.ToUtf8Buffer());
string iv = "My secret iv!!!!"; // IV deve essere esattamente 16 byte.
// Cripta CBC
_aes.Start(AesContext.Mode.EcbEncrypt, key.ToUtf8Buffer(), iv.ToUtf8Buffer());
encrypted = _aes.Update(data.ToUtf8Buffer());
_aes.Finish();
// Decripta CBC
_aes.Start(AesContext.Mode.EcbDecrypt, key.ToUtf8Buffer(), iv.ToUtf8Buffer());
decrypted = _aes.Update(encrypted);
_aes.Finish();
// Verifica CBC
Debug.Assert(decrypted == data.ToUtf8Buffer());
}
}
Metodi
void |
finish() |
start(mode: Mode, key: PackedByteArray, iv: PackedByteArray = PackedByteArray()) |
|
update(src: PackedByteArray) |
Enumerazioni
enum Mode: 🔗
Mode MODE_ECB_ENCRYPT = 0
Modalità di crittografia di codebook elettronico AES.
Mode MODE_ECB_DECRYPT = 1
Modalità di decrittazione di codebook elettronico 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
Valore massimo dell'enumerazione di modalità.
Descrizioni dei metodi
void finish() 🔗
Chiudere questo contesto AES in modo che possa essere ricominciato. Vedi start().
PackedByteArray get_iv_state() 🔗
Ottiene lo stato IV attuale per questo contesto (IV viene aggiornato quando viene chiamato update()). Normalmente non hai bisogno di questa funzione.
Nota: Questa funzione ha senso solo quando il contesto è iniziato con MODE_CBC_ENCRYPT o MODE_CBC_DECRYPT.
Error start(mode: Mode, key: PackedByteArray, iv: PackedByteArray = PackedByteArray()) 🔗
Avvia il contesto AES nella modalità mode fornita. Una chiave (key) di 16 o 32 byte deve essere sempre fornita, mentre un iv (vettore di inizializzazione) di esattamente 16 byte è necessario solo quando mode è MODE_CBC_ENCRYPT o MODE_CBC_DECRYPT.
PackedByteArray update(src: PackedByteArray) 🔗
Eseguire l'operazione desiderata per questo contesto AES. Ritornerà un PackedByteArray contenente il risultato della crittografia (o decrittazione) del src fornito. Vedi start() per le modalità di funzionamento.
Nota: La dimensione di src deve essere un multiplo di 16. Applica un po' di imbottitura se necessario.