簡體   English   中英

替代Python 2中的M2Crypto的EVP

[英]Alternative to M2Crypto's EVP in Python 3

我正在拼命嘗試將舊項目升級到Python 3,但是我3年前編寫的我們的一個庫使用了M2Crypto,它似乎在Py3k下不可用。 它幾乎沒有安裝在Python 2上,但這完全是另外一回事。

無論如何,我們僅使用它通過其EVP模塊對字符串進行簽名。 這是我們使用M2Crypto的程度:

from M2Crypto import EVP

def sign_string(message, priv_key_string):
    key = EVP.load_key_string(priv_key_string)
    key.reset_context(md='sha1')
    key.sign_init()
    key.sign_update(message)
    return key.sign_final()

使用SHA1從字符串加載密鑰並簽名提供的消息。 表面上看起來真的很簡單,但是老實說我不知道​​發生了什么。 EVP對我來說是一個黑匣子。

還有其他可在Python 3中運行的EVP庫嗎? 還是有人知道讓M2Crypto在Python 3中工作的秘密嗎?

好的,將另一個項目從M2crypto遷移到rsa的做法分開,上述內容可以很好地簡化:

def sign_string(message, priv_key_string):
    import rsa
    key = rsa.PrivateKey.load_pkcs1(priv_key_string.encode())
    return rsa.sign(message.encode(), key, 'SHA-1')

這並不是說這就是所有需要做的。 Python3的字節/字符串分隔擰緊了很多以前似乎不是問題的東西。 我敢肯定這是有道理的,但是當您必須使用成熟的代碼來完成漫長的簽名過程以弄清您在說什么時,它就是一個PITA。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM