У меня есть программа, использующая библиотеку Hazmat Crypytography, которая имеет команду для шифрования и подписи сообщения, а затем команду для проверки подписи и расшифровки сообщения. Шифрование и дешифрование на своих собственных работах, но когда я пытаюсь подписать сообщение перед шифрованием, я получаю: valueError: шифрование не удалось < /p>
Команда шифрования работает, принимая общественность получателя Ключ, закрытый ключ отправителя, файл открытого текста, а затем пустой шифр, который затем заполняется подписанным и зашифрованным сообщением. Он подписывает сообщение, используя закрытый ключ отправителя, а затем пытается зашифровать сообщение с открытым ключом получателя, но именно здесь не удается. Затем он должен написать подписанное и зашифрованное сообщение в Cipherfile. Я не уверен, что моя дешифрование и проверка тоже подойдут, но я просто работаю над подписью и шифрованием. />from cryptography.hazmat.primitives.asymmetric import padding
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.serialization import load_pem_public_key, load_pem_private_key
import sys, argparse
def parse_args():
parser = argparse.ArgumentParser(description='Encrypt/Decrypt')
parser.add_argument('-e', '--encrypt', nargs=4)
parser.add_argument('-d', '--decrypt', nargs=4)
return parser.parse_args()
def read_public_key(public_key_pem):
with open(public_key_pem, 'rb') as key_file:
return load_pem_public_key(key_file.read())
def read_private_key(private_key_pem):
with open(private_key_pem, 'rb') as key_file:
return load_pem_private_key(key_file.read(), password=None)
def sign_message(message, private_key):
signature = private_key.sign(
message,
padding.PSS(
mgf=padding.MGF1(hashes.SHA256()),
salt_length=padding.PSS.MAX_LENGTH
),
hashes.SHA256()
)
with open("signature_file_txt", "wb") as f:
f.write(signature)
return signature
def verify_message(encrypted_message, signature, public_key):
try:
public_key.verify(
signature,
encrypted_message,
padding.PSS(
mgf=padding.MGF1(hashes.SHA256()),
salt_length=padding.PSS.MAX_LENGTH
),
hashes.SHA256()
)
print("Signature is valid!")
return message
except Exception:
print("Signature verification failed!")
return None
def encrypt(signed_message, public_key):
encrypted_message = public_key.encrypt(
signed_message,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
with open("encrypted_file_txt", "wb") as f:
f.write(encrypted_message)
return encrypted_message
def decrypt(encrypted_message, private_key):
try:
return private_key.decrypt(
encrypted_message,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
except Exception:
print("Error: Decryption Failed")
return None
def main():
args = parse_args()
if args.encrypt:
public_key = read_public_key(args.encrypt[0])
private_key = read_private_key(args.encrypt[1])
input_plaintext_file = args.encrypt[2]
ciphertext_file = args.encrypt[3]
with open(input_plaintext_file, "rb") as file:
message = file.read()
signed_message = sign_message(message, private_key)
encrypted_message = encrypt(signed_message, public_key)
with open(ciphertext_file, "wb") as file:
file.write(encrypted_message)
print("Encryption & Signing Successful!")
if args.decrypt:
private_key = read_private_key(args.decrypt[0])
public_key = read_public_key(args.decrypt[1])
ciphertext_file = args.decrypt[2]
output_plaintext_file = args.decrypt[3]
with open(ciphertext_file, "rb") as file:
encrypted_message = file.read()
decrypted_message = decrypt(encrypted_message, private_key)
if decrypted_message:
signature_file = "signature_file_txt"
with open(signature_file, "rb") as f:
signature = f.read()
verified_message = verify_message(decrypted_message, signature, public_key)
if verified_message:
with open(output_plaintext_file, "wb") as file:
file.write(verified_message)
print("Decryption & Signature Verification Successful!")
else:
print("Signature verification failed! Decrypted message will not be saved.")
else:
print("Decryption failed!")
if __name__ == "__main__":
main()
Подробнее здесь: https://stackoverflow.com/questions/794 ... age-with-r
Получение ошибки в шифровании при попытке подписать и шифровать сообщение с RSA ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Почему шифр в Java может шифровать данные любой длины с помощью AES, но не с помощью RSA?
Anonymous » » в форуме JAVA - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-