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
Hérite de : RefCounted < Object
Fournit l'accès au chiffrement/déchiffrement AES de données brutes.
Description
Cette classe contient l'information de contexte nécessaire aux opérations de chiffrement/déchiffrement AES (Advanced Encryption Standard, litt. Norme de Chiffrement Avancé). Elle est compatible avec les modes AES-ECB et AES-CBC.
extends Node
var aes = AESContext.new()
func _ready():
var cle = "Ma clé secrète !!!" # La clé doit être soit de 16 ou de 32 octets.
var donnee = "Mon texte secret!!" # La taille des données doit être un multiple de 16 octets, ajoutez du remplissage si nécessaire.
# Crypter l'ECB
aes.start(AESContext.MODE_ECB_ENCRYPT, cle.to_utf8())
var encrypte = aes.update(donnee.to_utf8())
aes.finish()
# Décrypter l'ECB
aes.start(AESContext.MODE_ECB_DECRYPT, cle.to_utf8())
var decrypte = aes.update(encrypte)
aes.finish()
# Vérifier l'ECB
assert(decrypte == donnee.to_utf8())
var iv = "Mon iv secret !!!!" # La taille du vecteur d'initialisation doit être d'exactement 16 octets.
# Chiffrer le CBC
aes.start(AESContext.MODE_CBC_ENCRYPT, cle.to_utf8(), iv.to_utf8())
encrypte = aes.update(donnee.to_utf8())
aes.finish()
# Déchiffrer le CBC
aes.start(AESContext.MODE_CBC_DECRYPT, cle.to_utf8(), iv.to_utf8())
decrypte = aes.update(encrypte)
aes.finish()
# Vérifier le CBC
assert(encrypte == donnee.to_utf8())
using Godot;
using System.Diagnostics;
public partial class MonNoeud : Node
{
private AesContext _aes = new AesContext();
public override void _Ready()
{
string cle = "Ma clé secrète !!!"; // La clé doit être soit de 16 ou de 32 octets.
string donnee = "Mon texte secret !!"; // La taille des données doit être un multiple de 16 octets, ajoutez du remplissage si nécessaire.
// Crypter l'ECB
_aes.Start(AesContext.Mode.EcbEncrypt, cle.ToUtf8Buffer());
byte[] encrypte = _aes.Update(donnee.ToUtf8Buffer());
_aes.Finish();
// Décrypter l'ECB
_aes.Start(AesContext.Mode.EcbDecrypt, cle.ToUtf8Buffer());
byte[] decrypte = _aes.Update(encrypte);
_aes.Finish();
// Vérifier l'ECB
Debug.Assert(decrypte == donnees.ToUtf8Buffer());
string iv = "Mon iv secret !!!!"; // La taille du vecteur d'initialisation doit être d'exactement 16 octets.
// Chiffrer le CBC
_aes.Start(AesContext.Mode.EcbEncrypt, cle.ToUtf8Buffer(), iv.ToUtf8Buffer());
encrypte = _aes.Update(donnee.ToUtf8Buffer());
_aes.Finish();
// Déchiffrer le CBC
_aes.Start(AesContext.Mode.EcbDecrypt, cle.ToUtf8Buffer(), iv.ToUtf8Buffer());
decrypted = _aes.Update(encrypte);
_aes.Finish();
// Vérifier le CBC
Debug.Assert(decrypte == donnee.ToUtf8Buffer());
}
}
Méthodes
void |
finish() |
start(mode: Mode, key: PackedByteArray, iv: PackedByteArray = PackedByteArray()) |
|
update(src: PackedByteArray) |
Énumérations
enum Mode: 🔗
Mode MODE_ECB_ENCRYPT = 0
Mode de chiffrement du livre de codes électroniques AES.
Mode MODE_ECB_DECRYPT = 1
Mode de décryptage du codebook électronique AES.
Mode MODE_CBC_ENCRYPT = 2
Mode de chiffrement par chaînage de blocs AES.
Mode MODE_CBC_DECRYPT = 3
Mode de déchiffrement par chaînage de blocs AES.
Mode MODE_MAX = 4
Valeur maximale pour le mode énumeration.
Descriptions des méthodes
void finish() 🔗
Ferme ce contexte AES afin qu’il puisse être recommencé. Voir start().
PackedByteArray get_iv_state() 🔗
Obtient l'état IV actuel pour ce contexte (L'IV est mis à jour en appelant update()). Vous n'avez généralement pas besoin de cette fonction.
Note : Cette fonction a seulement du sens quand le contexte est initialisé avec MODE_CBC_ENCRYPT ou MODE_CBC_DECRYPT.
Error start(mode: Mode, key: PackedByteArray, iv: PackedByteArray = PackedByteArray()) 🔗
Commence le contexte AES dans le mode donné. Une clé key de soit 16 ou 32 octets doit toujours être fournie, alors qu'un iv (vecteur d'initialisation) de précisément 16 octets est seulement nécessaire quand mode est soit MODE_CBC_ENCRYPT ou MODE_CBC_DECRYPT.
PackedByteArray update(src: PackedByteArray) 🔗
Exécute l'opération désirée pour ce contexte AES. Renverra un PackedByteArray contenant le résultat du chiffrement (ou déchiffrement) de src. Voir start() pour le mode d'opération.
Note : La taille de src doit être un multiple de 16. Applique du padding si nécessaire.