#VerifyRSA = M2Crypto.RSA.load_pub_key('Alice-public.pem')
#VerifyRSA.verify_rsassa_pss(MsgDigest.digest(), Signature)
if Geekso.verify_rsassa_pss(MsgDigest.digest(), Signature) == 1:
print "签名正确"
else:
print "签名不正确"
2.字符串生成签名、验证签名
#用私钥签名
SignEVP = M2Crypto.EVP.load_key('jb51.net-private.pem')
SignEVP.sign_init()
SignEVP.sign_update('来自这一客(//www.jb51.net)的签名串')
StringSignature = SignEVP.sign_final()
print "签名串是:"
print StringSignature.encode('base64')
#用公钥验证签名
PubKey = M2Crypto.RSA.load_pub_key('jb51.net-public.pem')
VerifyEVP = M2Crypto.EVP.PKey()
VerifyEVP.assign_rsa(PubKey)
VerifyEVP.verify_init()
VerifyEVP.verify_update('来自这一客(//www.jb51.net)的签名串')
if VerifyEVP.verify_final(StringSignature) == 1:
print "字符串被成功验证。"
else:
print "字符串验证失败!"
3.给证书加上密码
给证书加密码的好处是即使证书被人拿了,没有密码也用不了。
def passphrase(v):
return '4567890'
生成证书时用
Geekso.save_key('jb51.net-private.pem',callback=passphrase)
使用证书时用
ReadRSA = RSA.load_key ('jb51.net-private.pem', passphrase)
二、 X509标准方式生成的证书
1.生成证书、公钥文件、私钥文件
import time
from M2Crypto import X509, EVP, RSA, ASN1
def issuer_name():
"""
证书发行人名称(专有名称)。
Parameters:
none
Return:
X509标准的发行人obj.
"""
issuer = X509.X509_Name()
issuer.C = "CN" # 国家名称
issuer.CN = "*.jb51.net" # 普通名字
issuer.ST = "Hunan Changsha"
issuer.L = "Hunan Changsha"
issuer.O = "Geekso Company Ltd"
issuer.OU = "Geekso Company Ltd"
issuer.Email = "123456@qq.com"
return issuer
def make_request(bits, cn):
"""
创建一个X509标准的请求。
Parameters:
bits = 证书位数
cn = 证书名称
Return:










