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...
Crypto
Успадковує: RefCounted < Object
Забезпечує доступ до розширених криптографічних функцій.
Опис
Клас Crypto надає доступ до розширених криптографічних функцій.
Наразі це включає шифрування/дешифрування асиметричного ключа, підписання/перевірку та генерацію криптографічно безпечних випадкових байтів, ключів RSA, дайджестів HMAC і самопідписаних X509Certificate.
var crypto = Crypto.new()
# Створіть новий ключ RSA.
змінний ключ = crypto.generate_rsa(4096)
# Створіть новий самопідписаний сертифікат із вказаним ключем.
var cert = crypto.generate_self_signed_certificate(key, "CN=mydomain.com,O=My Game Company,C=IT")
# Збережіть ключ і сертифікат у папці користувача.
key.save("user://generated.key")
cert.save("user://generated.crt")
# Шифрування
var data = "Деякі дані"
var encrypted = crypto.encrypt(key, data.to_utf8_buffer())
# Розшифровка
var decrypted = crypto.decrypt(key, encrypted)
# Підпис
var signature = crypto.sign(HashingContext.HASH_SHA256, data.sha256_buffer(), key)
# Перевірка
var verified = crypto.verify(HashingContext.HASH_SHA256, data.sha256_buffer(), signature, key)
# Перевірки
стверджувати (verified)
assert(data.to_utf8_buffer() == decrypted)
using Godot;
using System.Diagnostics;
Crypto crypto = new Crypto();
// Створення нового ключа RSA.
Key CryptoKey = crypto.GenerateRsa(4096);
// Створити новий самопідписаний сертифікат із заданим ключем.
X509Certificate cert = crypto.GenerateSelfSignedCertificate(key, "CN=mydomain.com,O=My Game Company,C=IT");
// Збережіть ключ і сертифікат у папці користувача.
key.Save("user://generated.key");
cert.Save("user://generated.crt");
// Шифрування
string data = "Деякі дані";
byte[] encrypted = crypto.Encrypt(key, data.ToUtf8Buffer());
// Розшифровка
byte[] decrypted = crypto.Decrypt(key, encrypted);
// Підписання
byte[] signature = crypto.Sign(HashingContext.HashType.Sha256, Data.Sha256Buffer(), key);
// Перевірка
bool verified = crypto.Verify(HashingContext.HashType.Sha256, Data.Sha256Buffer(), signature, key);
// Перевірки
Debug.Assert(verified);
Debug.Assert(data.ToUtf8Buffer() == decrypted);
Методи
constant_time_compare(trusted: PackedByteArray, received: PackedByteArray) |
|
PackedByteArray |
|
PackedByteArray |
|
PackedByteArray |
generate_random_bytes(size: int) |
generate_rsa(size: int) |
|
X509Certificate |
generate_self_signed_certificate(key: CryptoKey, issuer_name: String = "CN=myserver,O=myorganisation,C=IT", not_before: String = "20140101000000", not_after: String = "20340101000000") |
PackedByteArray |
hmac_digest(hash_type: HashType, key: PackedByteArray, msg: PackedByteArray) |
PackedByteArray |
sign(hash_type: HashType, hash: PackedByteArray, key: CryptoKey) |
verify(hash_type: HashType, hash: PackedByteArray, signature: PackedByteArray, key: CryptoKey) |
Описи методів
bool constant_time_compare(trusted: PackedByteArray, received: PackedByteArray) 🔗
Порівняти два PackedByteArray для рівності без витоку інформації про строки, щоб запобігти нападам часу.
this blog post для отримання додаткової інформації.
PackedByteArray decrypt(key: CryptoKey, ciphertext: PackedByteArray) 🔗
Розшифрування даної ciphertext з наданим приватним key.
Примітка: Максимальний розмір прийнятий ciphertext обмежений за розміром ключа.
PackedByteArray encrypt(key: CryptoKey, plaintext: PackedByteArray) 🔗
Зашифрувати дані plaintext з наданою громадськістю key.
Примітка: Максимальний розмір прийнятих plaintext обмежений за розміром ключа.
PackedByteArray generate_random_bytes(size: int) 🔗
Генерація PackedByteArray криптографічно захищених випадкових байтів з урахуванням size.
CryptoKey generate_rsa(size: int) 🔗
Генерація RSA CryptoKey, яка може бути використана для створення самопризначених сертифікатів і переданих до StreamPeerTLS.accept_stream().
X509Certificate generate_self_signed_certificate(key: CryptoKey, issuer_name: String = "CN=myserver,O=myorganisation,C=IT", not_before: String = "20140101000000", not_after: String = "20340101000000") 🔗
Генерація самовизнаного X509Certificate з даної CryptoKey та problemr_name. Строк дії сертифіката буде визначено not_before та not_after (перша дата дії та останні дати дії). problemr_name повинен містити принаймні "CN=" (ім'я, тобто доменне ім'я), "O=" (організація, тобто ім'я Вашої компанії), "C=" (country, тобто 2 листований код ISO-3166 країни, організація базується на).
Невеликий приклад для створення ключа RSA і сертифіката X509.
var crypto = Crypto.new()
# Генерувати 4096 біт RSA ключ.
ключ вар = крипто.generate_rsa(4096)
# Генерувати самопризначений сертифікат за допомогою даного ключа.
var cert = crypto.generate_self_signed_certificate(key, "CN=example.com,O=A Game Company,C=IT")
var crypto = new Crypto();
// Генерувати 4096 біт RSA ключ.
CryptoKey key = крипто.GenerateRsa(4096);
// Генерувати самопризначений сертифікат за допомогою даного ключа.
X509Certificate cert = crypto.GenerateSelfSignedCertificate(key, "CN=mydomain.com,O=My Game Company,C=IT");
PackedByteArray hmac_digest(hash_type: HashType, key: PackedByteArray, msg: PackedByteArray) 🔗
HMAC дайджест msg за допомогою key. параметр paramh_type є алгоритмом хешування, який використовується для внутрішнього та зовнішнього хешу.
В даний час тільки HashingContext.HASH_SHA256 і [constant HashingContext. Підтримка HASH_SHA1.
PackedByteArray sign(hash_type: HashType, hash: PackedByteArray, key: CryptoKey) 🔗
Ознайомитися з даним h типу h_type з надана приватна key.
bool verify(hash_type: HashType, hash: PackedByteArray, signature: PackedByteArray, key: CryptoKey) 🔗
Визначте, що заданий signature для h типу h_type проти заданої громадськості key.