reckfellENGINE

Crypto

Предоставляет доступ к расширенным криптографическим функциям.

На этой странице
class CryptoReckfellSharpНаследует RefCounted

Предоставляет доступ к расширенным криптографическим функциям.

Класс Crypto обеспечивает доступ к расширенным криптографическим функциям. В настоящее время сюда входят асимметричное шифрование/дешифрование ключей, подписание/проверка и генерация криптографически безопасных случайных байтов, ключей RSA, дайджестов HMAC и самоподписанных X509Certificate.

C#
using Reckfell;
using System.Diagnostics;

Crypto crypto = new Crypto();

// Generate new RSA key.
CryptoKey key = crypto.GenerateRsa(4096);

// Generate new self-signed certificate with the given key.
X509Certificate cert = crypto.GenerateSelfSignedCertificate(key, "CN=mydomain.com,O=My Game Company,C=IT");

// Save key and certificate in the user folder.
key.Save("user://generated.key");
cert.Save("user://generated.crt");

// Encryption
string data = "Some data";
byte[] encrypted = crypto.Encrypt(key, data.ToUtf8Buffer());

// Decryption
byte[] decrypted = crypto.Decrypt(key, encrypted);

// Signing
byte[] signature = crypto.Sign(HashingContext.HashType.Sha256, Data.Sha256Buffer(), key);

// Verifying
bool verified = crypto.Verify(HashingContext.HashType.Sha256, Data.Sha256Buffer(), signature, key);

// Checks
Debug.Assert(verified);
Debug.Assert(data.ToUtf8Buffer() == decrypted);

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Конструкторы1

CryptoКонструктор
# Crypto
C#
public Crypto();

Методы15

ConstantTimeCompare2 перегрузки
# ConstantTimeCompare · 1/2
C#
public bool ConstantTimeCompare(byte[] trusted, byte[] received);

Сравнивает два byte[] на равенство без утечки информации о времени, чтобы предотвратить атаки по времени. См. эту запись в блоге для получения дополнительной информации.

Параметры
ИмяТипПо умолчанию
trustedbyte[]—
receivedbyte[]—
Возвращает bool
# ConstantTimeCompare · 2/2
C#
public bool ConstantTimeCompare(ReadOnlySpan<byte> trusted, ReadOnlySpan<byte> received);

Сравнивает два byte[] на равенство без утечки информации о времени, чтобы предотвратить атаки по времени. См. эту запись в блоге для получения дополнительной информации.

Параметры
ИмяТипПо умолчанию
trustedReadOnlySpan<byte>—
receivedReadOnlySpan<byte>—
Возвращает bool
Decrypt2 перегрузки
# Decrypt · 1/2
C#
public byte[] Decrypt(CryptoKey key, byte[] ciphertext);

Расшифруйте заданный ciphertext с помощью предоставленного закрытого key. Примечание: Максимальный размер принятого шифротекста ограничен размером ключа.

Параметры
ИмяТипПо умолчанию
keyCryptoKey—
ciphertextbyte[]—
Возвращает byte[]
# Decrypt · 2/2
C#
public byte[] Decrypt(CryptoKey key, ReadOnlySpan<byte> ciphertext);

Расшифруйте заданный ciphertext с помощью предоставленного закрытого key. Примечание: Максимальный размер принятого шифротекста ограничен размером ключа.

Параметры
ИмяТипПо умолчанию
keyCryptoKey—
ciphertextReadOnlySpan<byte>—
Возвращает byte[]
Encrypt2 перегрузки
# Encrypt · 1/2
C#
public byte[] Encrypt(CryptoKey key, byte[] plaintext);

Зашифруйте указанный plaintext с помощью предоставленного открытого key. Примечание: Максимальный размер принятого открытого текста ограничен размером ключа.

Параметры
ИмяТипПо умолчанию
keyCryptoKey—
plaintextbyte[]—
Возвращает byte[]
# Encrypt · 2/2
C#
public byte[] Encrypt(CryptoKey key, ReadOnlySpan<byte> plaintext);

Зашифруйте указанный plaintext с помощью предоставленного открытого key. Примечание: Максимальный размер принятого открытого текста ограничен размером ключа.

Параметры
ИмяТипПо умолчанию
keyCryptoKey—
plaintextReadOnlySpan<byte>—
Возвращает byte[]
GenerateRandomBytesbyte[]
# GenerateRandomBytes
C#
public byte[] GenerateRandomBytes(int size);

Генерирует byte[] криптографически безопасных случайных байтов с заданным size.

Параметры
ИмяТипПо умолчанию
sizeint—
Возвращает byte[]
GenerateRsaCryptoKey
# GenerateRsa
C#
public CryptoKey GenerateRsa(int size);

Генерирует RSA CryptoKey, который можно использовать для создания самоподписанных сертификатов и передавать в StreamPeerTls.AcceptStream.

Параметры
ИмяТипПо умолчанию
sizeint—
Возвращает CryptoKey
GenerateSelfSignedCertificateX509Certificate
# GenerateSelfSignedCertificate
C#
public X509Certificate GenerateSelfSignedCertificate(CryptoKey key, string issuerName = "CN=myserver,O=myorganisation,C=IT", string notBefore = "20140101000000", string notAfter = "20340101000000");

Генерирует самоподписанный X509Certificate из заданного CryptoKey и issuer_name. Действительность сертификата будет определяться not_before и not_after (первая действительная дата и последняя действительная дата). issuer_name должен содержать как минимум "CN=" (общее имя, т. е. доменное имя), "O=" (организация, т. е. название вашей компании), "C=" (страна, т. е. двухбуквенный код ISO-3166 страны, в которой находится организация). Небольшой пример генерации ключа RSA и самоподписанного сертификата X509.

C#
var crypto = new Crypto();
// Generate 4096 bits RSA key.
CryptoKey key = crypto.GenerateRsa(4096);
// Generate self-signed certificate using the given key.
X509Certificate cert = crypto.GenerateSelfSignedCertificate(key, "CN=mydomain.com,O=My Game Company,C=IT");
Параметры
ИмяТипПо умолчанию
keyCryptoKey—
issuerNamestring"CN=myserver,O=myorganisation,C=IT"
notBeforestring"20140101000000"
notAfterstring"20340101000000"
Возвращает X509Certificate
HmacDigest2 перегрузки
# HmacDigest · 1/2
C#
public byte[] HmacDigest(HashingContext.HashType hashType, byte[] key, byte[] msg);

Генерирует HMAC(https://en.wikipedia.org/wiki/HMAC) дайджест msg с использованием key. Параметр hash_type — это алгоритм хеширования, который используется для внутренних и внешних хешей. В настоящее время поддерживаются только HashingContext.HashType.Sha256 и HashingContext.HashType.Sha1.

Параметры
ИмяТипПо умолчанию
hashTypeHashingContext.HashType—
keybyte[]—
msgbyte[]—
Возвращает byte[]
# HmacDigest · 2/2
C#
public byte[] HmacDigest(HashingContext.HashType hashType, ReadOnlySpan<byte> key, ReadOnlySpan<byte> msg);

Генерирует HMAC(https://en.wikipedia.org/wiki/HMAC) дайджест msg с использованием key. Параметр hash_type — это алгоритм хеширования, который используется для внутренних и внешних хешей. В настоящее время поддерживаются только HashingContext.HashType.Sha256 и HashingContext.HashType.Sha1.

Параметры
ИмяТипПо умолчанию
hashTypeHashingContext.HashType—
keyReadOnlySpan<byte>—
msgReadOnlySpan<byte>—
Возвращает byte[]
Sign2 перегрузки
# Sign · 1/2
C#
public byte[] Sign(HashingContext.HashType hashType, byte[] hash, CryptoKey key);

Подписать заданный hash типа hash_type с помощью предоставленного закрытого key.

Параметры
ИмяТипПо умолчанию
hashTypeHashingContext.HashType—
hashbyte[]—
keyCryptoKey—
Возвращает byte[]
# Sign · 2/2
C#
public byte[] Sign(HashingContext.HashType hashType, ReadOnlySpan<byte> hash, CryptoKey key);

Подписать заданный hash типа hash_type с помощью предоставленного закрытого key.

Параметры
ИмяТипПо умолчанию
hashTypeHashingContext.HashType—
hashReadOnlySpan<byte>—
keyCryptoKey—
Возвращает byte[]
Verify2 перегрузки
# Verify · 1/2
C#
public bool Verify(HashingContext.HashType hashType, byte[] hash, byte[] signature, CryptoKey key);

Проверьте, что заданная signature для hash типа hash_type соответствует предоставленному открытому key.

Параметры
ИмяТипПо умолчанию
hashTypeHashingContext.HashType—
hashbyte[]—
signaturebyte[]—
keyCryptoKey—
Возвращает bool
# Verify · 2/2
C#
public bool Verify(HashingContext.HashType hashType, ReadOnlySpan<byte> hash, ReadOnlySpan<byte> signature, CryptoKey key);

Проверьте, что заданная signature для hash типа hash_type соответствует предоставленному открытому key.

Параметры
ИмяТипПо умолчанию
hashTypeHashingContext.HashType—
hashReadOnlySpan<byte>—
signatureReadOnlySpan<byte>—
keyCryptoKey—
Возвращает bool
Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.