亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3326 | 回復: 0
打印 上一主題 下一主題

關于Python RSA簡陋隨筆(rsa,ezPyCrypto, M2Crypto) [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2011-05-10 14:04 |只看該作者 |倒序瀏覽
最近要跟公司的OAuth對接,所以簡單地了解了一下RSA的相關模塊用法。

rsa:
內置文檔(rsa.__doc__)上明確說,這是教學用的模塊。并不實用于生產環(huán)境。

ezPyCrypto:
官方網站:http://www.freenet.org.nz/ezPyCrypto/detail/index.html
基于pycrypto。
文檔對于導入key沒有太多的說明,直接看源碼后,我悲劇的發(fā)現ezPyCrypto的importKey() 似乎是使用了它自己定義的格式。也就是說,如果你的key不是由ezPyCrypto的exportKey()得到的,那么你會在各種轉換上花費很大的力氣。

M2Crypto:
官網(http://chandlerproject.org/Projects/MeTooCrypto)無法訪問。
源碼來源,http://pypi.python.org/pypi/M2Crypto,在snow leopard上無法直接編譯。
最后使用Macport安裝。

使用M2Crypto.RSA.load_key()來生成M2Crypto.RSA.RSA的實例,注意,key pair其實就是私鑰(private key),PEM格式(openssl默認輸出格式)。
如果你只需要加密,可以考慮用load_pub_key,單獨讀入公鑰(public key)。

加密數據需要通過某種編碼變成單字節(jié)的數組。下面的例子使用了UTF-8 編碼。
  1. # -*- encoding: UTF-8 -*-
  2. import M2Crypto as m2c

  3. key = m2c.RSA.load_key('key1/id_rsa')

  4. # encrypt something:
  5. data = u'Mochi 麻球'.encode('UTF-8')
  6. encrypted = key.public_encrypt(data, m2c.RSA.pkcs1_padding)

  7. # and now decrypt it:
  8. decrypted = key.private_decrypt(encrypted, m2c.RSA.pkcs1_padding)
  9. print data == decrypted
復制代碼
注意  RSA.sign(self, digest, algo='sha1') 這個方法,雖然在最后的參數指定了hash方法,但是其實需要先在外面自行獲得digest。

代碼里面有一個padding參數,如果你對此感興趣,可以參考:
http://tools.ietf.org/html/rfc3447

PKCS #1有兩種padding的定義,我個人的理解RSA.pkcs1_padding對應是下面的一節(jié):
http://tools.ietf.org/html/rfc3447#section-7.2.1

如果你不高興看這些細節(jié),只要記得編碼和解碼的時候,使用的參數一致即可。

See also:
http://www.amk.ca/python/code/crypto

里面提到一個yawPyCrypto,似乎不錯。

有點簡陋,這是在上班時候的邊做邊寫的。計劃在不忙的時候寫一個rsa算法的淺析。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯網協會會員  聯系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP