crypto - Шифрування та хешування

Функції для шифрування, дешифрування та хешування даних.

AES шифрування використовує апаратне прискорення ESP32. CRC32 обчислюється за допомогою апаратної ROM-функції ESP32.

Приклад:

 1-- AES-256 шифрування та дешифрування
 2local key = "01234567890abcdef01234567890abcd" -- 32 байти = AES-256
 3local encrypted = crypto.encrypt("Привіт, світ!", key)
 4console.print("Зашифровано:", encrypted)
 5
 6local decrypted = crypto.decrypt(encrypted, key)
 7console.print("Розшифровано:", decrypted)
 8
 9-- MD5 хеш
10local hash = crypto.md5("hello world")
11console.print("MD5:", hash)
12
13-- CRC32 контрольна сума
14local checksum = crypto.crc32("hello world")
15console.print("CRC32:", checksum)
class crypto
static encrypt(plaintext, key)

Шифрує рядок за допомогою AES-CBC з PKCS7-доповненням.

Ключ має бути рівно 16, 24 або 32 байти (AES-128, AES-192 або AES-256 відповідно).

Повертає hex-рядок, що містить випадковий вектор ініціалізації (IV) та зашифровані дані. Використовує апаратне прискорення AES ESP32.

Parameters:
  • plaintext (str) – текст для шифрування

  • key (str) – ключ шифрування (16, 24 або 32 байти)

Returns:

hex_encoded зашифровані дані у форматі hex (IV + шифротекст)

Return type:

str

Usage:

1local encrypted = crypto.encrypt("Привіт, світ!", "0123456789abcdef")
2console.print(encrypted) -- hex-рядок
static decrypt(hex_encrypted, key)

Дешифрує hex-рядок, зашифрований функцією crypto.encrypt.

Ключ має бути тим самим, що використовувався для шифрування.

Parameters:
  • hex_encrypted (str) – зашифровані дані у форматі hex (результат crypto.encrypt)

  • key (str) – ключ дешифрування (16, 24 або 32 байти)

Returns:

plaintext розшифрований текст

Return type:

str

Usage:

1local encrypted = crypto.encrypt("Привіт, світ!", "0123456789abcdef")
2local decrypted = crypto.decrypt(encrypted, "0123456789abcdef")
3console.print(decrypted) -- "Привіт, світ!"
static md5(data)

Обчислює MD5-хеш рядка.

Повертає hex-рядок довжиною 32 символи.

Parameters:

data (str) – дані для хешування

Returns:

hex_hash MD5-хеш у форматі hex (32 символи)

Return type:

str

Usage:

1local hash = crypto.md5("Привіт, світ!")
2console.print(hash) -- "d41d8cd98f00b204e9800998ecf8427e" (приклад)
static crc32(data)

Обчислює CRC32 контрольну суму рядка.

Використовує апаратну ROM-функцію ESP32.

Parameters:

data (str) – дані для обчислення контрольної суми

Returns:

crc32 контрольна сума CRC32

Return type:

integer

Usage:

1local checksum = crypto.crc32("hello")
2console.print(checksum)