Ассиметричное шифрование с валидацией подписи | End Way - форум программирования и сливов различных скриптов
  • Присоединяйтесь к нам в телеграм канал! EndWay канал | EndSoft канал | EWStudio канал
  • Хочешь поставить скрипт, но не умеешь?
    А может ты хочешь свой скрипт на основе слитого?

    Тогда добро пожаловать в нашу студию разработки!

    Телеграм бот: EWStudioBot
    Телеграм канал: EWStudio

Ассиметричное шифрование с валидацией подписи

DeCoded

Кибермаг
Автор темы
8 Янв 2023
731
1,702
93
🌀 Модули : Crypto

💈 Скрипт ассиметричного шифрования, на каждом запуске генерирует новую пару ключей, шифрует сообщение, дешифрует и проводит валидацию, отлично подойдет для шифрования важных данных между двумя и более точками, также выводит сериализованную версию приватного ключа

Python:
from Crypto.PublicKey import RSA
from Crypto.Signature import pkcs1_15
from Crypto.Hash import SHA512


def generate_keypair():
    key = RSA.generate(2048)
    private_key = key.export_key()
    public_key = key.publickey().export_key()
    return private_key, public_key


def sign_data(data, private_key):
    key = RSA.import_key(private_key)
    h = SHA512.new(data.encode('utf-8'))
    return pkcs1_15.new(key).sign(h)


def verify_signature(data, signature, public_key):
    key = RSA.import_key(public_key)
    h = SHA512.new(data.encode('utf-8'))
    try:
        pkcs1_15.new(key).verify(h, signature)
        return True
    except (ValueError, TypeError):
        return False


def serialize_private_key(private_key):
    # Конвертируем приватный ключ в строку
    return private_key.decode()


def deserialize_private_key(serialized_private_key):
    # Конвертируем строку в приватный ключ
    return serialized_private_key.encode()


# Пример использования

private_key, public_key = generate_keypair()
data = "Hello, world!"
signature = sign_data(data, private_key)
is_valid = verify_signature(data, signature, public_key)

print(f"Приватный ключ: {private_key}")
print(f"Публичный ключ: {public_key}")
print(f"Данные: {data}")
print(f"Зашифрованные данные: {signature}")
print(f"Подпись верна: {'Да' if is_valid else 'Нет'}")

print(f'Сериализованный приватный ключ: {serialize_private_key(private_key)}')
 
Like
  • 1
Реакции: 1 user
Активность:
Пока что здесь никого нет