2018-11-15 python 私鑰簽名,公鑰驗(yàn)簽

from base64 import b64encode, b64decode

from Crypto.Hash import SHA
from Crypto.PublicKey import RSA
from Crypto.Signature import PKCS1_v1_5


def private_key_signature(message, privatefile):
    #use private key certificate to signature
    privatekey = RSA.importKey(_read_file(privatefile))
    signer = PKCS1_v1_5.new(privatekey)
    return b64encode(signer.sign(SHA.new(message)))

def public_key_verify(message, sign, publicfile):
    #use public key certificate to verify
    publickey = RSA.importKey(_read_file(publicfile))
    verifier = PKCS1_v1_5.new(publickey)
    return verifier.verify(SHA.new(message), b64decode(sign))

def _read_file(file_path):
    with open(file_path, 'rb') as fp:
        return fp.read()

結(jié)果如下:

In [2]: sign = private_key_signature('123456', 'private.pem')

In [3]: sign
Out[3]: 'Uwa55Oa+ru/QbWBnax7jtjKKNbPHk2Nhe1m8BeS2JmDmd0zHQ0oKq6QJ4A23bG51R/kDhz9J/ipsIPpI7lCWzyM7O91SuSAlnq19XpywOB+uk/4RT/Q8AAndbhPlvP0gYxIkd6BKeWckfjvoBvN0fnM17fHpLo0LJwbYrr6zB6g='

In [6]: result = public_key_verify('123456', sign, 'public.pem')

In [7]: result
Out[7]: True
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容