import streamlit as st import hashlib from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives.asymmetric import ( padding, rsa, utils ) private_key = rsa.generate_private_key( public_exponent=65537, key_size=2048, ) st.write(""" ## Tanda Tangan Digital RSA """) input = st.text_input('Masukkan Teks', 'Niko Irsyad') prehashed_msg = hashlib.sha256(input.encode()).digest() signature = private_key.sign( prehashed_msg, padding.PSS( mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH ), utils.Prehashed(hashes.SHA256()) ) st.write("Tanda tangan digital :", signature) public_key = private_key.public_key() try : public_key.verify( signature, prehashed_msg, padding.PSS( mgf=padding.MGF1(hashes.SHA256()), salt_length=padding.PSS.MAX_LENGTH ), utils.Prehashed(hashes.SHA256()) ) st.write('Tanda tangan VALID') except InvalidSignature: st.write('Tanda tangan INVALID')