国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python有證書的加密解密實現方法

2020-02-23 06:11:16
字體:
來源:轉載
供稿:網友

本文實例講述了python有證書的加密解密實現方法。分享給大家供大家參考。具體實現方法如下:

最近在做python的加解密工作,同時加完密的串能在php上能解出來,網上也找了一些靠譜的資料,剛好也有時間我就總結了一下python在加密與解密這塊的代碼,今后可能還能用的上。相對于php而言python這塊加解密組件較多的,分別是:

python-crypto - 這個組件是基本組件,使用的函式相對比較復雜。
ezPyCrypto - 相對簡單,但他作出來的公私鑰無法與其他程序相兼容     SSLCrypto - 與 ezPyCrypto 是相同一個作者開發(fā),效率上要比ezPyCrypto 好。但一樣不能與其它程序相兼容。
pyopenssl - 似乎是用在https 通訊上的,而我找不到加解密的用法。
M2Crypto - 終于讓我找到了,但它有一大缺點,它底層是用 SWIG 與 OpenSSL 交接的。
在Windows安裝SWIG 程序是非常難的。

我選擇使用的是M2Crypto,公鑰與私鑰證書生成有兩個方式,一種采用RSA生成,另一種是X509生成。我就把這兩種加解密代碼分享出來,供大家參考,但轉載或使用時請寫明出處。

一、 RSA標準方式生成的證書

1.加密解密、加密簽名、驗證加密簽名
代碼如下:#encoding: utf8
import os
import M2Crypto
#隨機數生成器(1024位隨機)
M2Crypto.Rand.rand_seed(os.urandom(1024))
#生成一個1024位公鑰與私密鑰證書
Geekso = M2Crypto.RSA.gen_key(1024, 65537)
Geekso.save_key('jb51.net-private.pem', None)
Geekso.save_pub_key('jb51.net-public.pem')
#使用公鑰證書加密開始
WriteRSA = M2Crypto.RSA.load_pub_key('jb51.net-public.pem')
CipherText = WriteRSA.public_encrypt("這是一個秘密消息,只能用私鑰進行解密",M2Crypto.RSA.pkcs1_oaep_padding)
print "加密的串是:"
print CipherText.encode('base64')
#對加密串進行簽名
MsgDigest = M2Crypto.EVP.MessageDigest('sha1')
MsgDigest.update(CipherText)
#提示,這里也可以使用私鑰簽名
#WriteRSA = M2Crypto.RSA.load_key ('jb51.net-private.pem')
#Signature = WriteRSA.sign_rsassa_pss(MsgDigest.digest())
Signature = Geekso.sign_rsassa_pss(MsgDigest.digest())
print "簽名的串是:"
print Signature.encode('base64')
#使用私鑰證書解密開始
ReadRSA = M2Crypto.RSA.load_key ('jb51.net-private.pem')
try:
    PlainText = ReadRSA.private_decrypt (CipherText, M2Crypto.RSA.pkcs1_oaep_padding)
except:
    print "解密錯誤"
    PlainText = ""
if PlainText :
   print "解密出來的串是:"
   print PlainText
   # 驗證加密串的簽名
   MsgDigest = M2Crypto.EVP.MessageDigest('sha1')
   MsgDigest.update(CipherText)
   #提示,如果是用私鑰簽名的那就用公鑰驗證

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 恩平市| 莱州市| 刚察县| 芒康县| 峨边| 永年县| 上饶市| 军事| 黄梅县| 阳城县| 仪陇县| 阿拉善盟| 南岸区| 红桥区| 项城市| 海南省| 固始县| 富平县| 从化市| 缙云县| 澎湖县| 察雅县| 大宁县| 罗平县| 枣强县| 赤壁市| 炎陵县| 石嘴山市| 泰州市| 梧州市| 弋阳县| 钟祥市| 乌兰浩特市| 勃利县| 吴桥县| 西吉县| 额济纳旗| 菏泽市| 邵东县| 昔阳县| 钟祥市|