Как создать файл электронной подписи (.sig) используя Python? Добрый день! Очень необходима реализация механизма подписания файла (т.е. создание файла открепленной электронной подписи .sig) средствами Python 3. В поисках решений натыкался на материалы для старых версий Python которые нынче не поддерживаются. Действующие сертификаты (cer, pem) имеются. Поделитесь опытом.
Для создания файла электронной подписи (.sig) средствами Python 3 можно воспользоваться библиотекой cryptography. Вот пример кода, который позволяет создать файл .sig:
from cryptography.hazmat.primitives import serialization from cryptography.hazmat.primitives.asymmetric import padding from cryptography.hazmat.primitives import hashes from cryptography.hazmat.backends import default_backend # Чтение закрытого ключа из файла PEM with open("private_key.pem", "rb") as key_file: private_key = serialization.load_pem_private_key( key_file.read(), password=None, backend=default_backend() ) # Чтение файла для подписи with open("file_to_sign.txt", "rb") as file_to_sign: data = file_to_sign.read() # Создание подписи signature = private_key.sign( data, padding.PKCS1v15(), hashes.SHA256() ) # Запись подписи в отдельный файл with open("file_to_sign.sig", "wb") as sig_file: sig_file.write(signature)
В данном примере предполагается, что у вас есть закрытый ключ private_key.pem, файл для подписи file_to_sign.txt и вы хотите создать файл подписи file_to_sign.sig.
Не забудьте заменить имена файлов и алгоритм хэширования на необходимые в вашем случае. Надеюсь, что этот пример поможет вам решить вашу задачу. Если у вас возникнут дополнительные вопросы, не стесняйтесь задать их.
Для создания файла электронной подписи (.sig) средствами Python 3 можно воспользоваться библиотекой cryptography. Вот пример кода, который позволяет создать файл .sig:
from cryptography.hazmat.primitives import serializationfrom cryptography.hazmat.primitives.asymmetric import padding
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.backends import default_backend
# Чтение закрытого ключа из файла PEM
with open("private_key.pem", "rb") as key_file:
private_key = serialization.load_pem_private_key(
key_file.read(),
password=None,
backend=default_backend()
)
# Чтение файла для подписи
with open("file_to_sign.txt", "rb") as file_to_sign:
data = file_to_sign.read()
# Создание подписи
signature = private_key.sign(
data,
padding.PKCS1v15(),
hashes.SHA256()
)
# Запись подписи в отдельный файл
with open("file_to_sign.sig", "wb") as sig_file:
sig_file.write(signature)
В данном примере предполагается, что у вас есть закрытый ключ private_key.pem, файл для подписи file_to_sign.txt и вы хотите создать файл подписи file_to_sign.sig.
Не забудьте заменить имена файлов и алгоритм хэширования на необходимые в вашем случае. Надеюсь, что этот пример поможет вам решить вашу задачу. Если у вас возникнут дополнительные вопросы, не стесняйтесь задать их.