Python 实现RSA SHA-1签名
2017-09-19 14:17
211 查看
今天对接业务接口,传递的参数需要用RSA签名,三方只给了java的RSA签名Demo;但我们这边后端采用python开发,因此需要用Python来实现RSA签名。
Python相关RSA加密库: rsa, Crypto, M2Crypto;下面分别调研了使用rsa和Crypto实现RSA签名(代码中,pem就是RSA签名需要的私钥)。
Java版Demo
import java.security.KeyFactory; import java.security.PrivateKey; import java.security.spec.PKCS8EncodedKeySpec; public class Sign { public static String sign(String content, String privateKey) { try { PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(Base64 .decode(privateKey)); KeyFactory keyf = KeyFactory.getInstance("RSA"); PrivateKey priKey = keyf.generatePrivate(priPKCS8); java.security.Signature signature = java.security.Signature .getInstance("SHA1WithRSA");//签名算法SHA1WithRSA signature.initSign(priKey); signature.update(content.getBytes("UTF-8")); byte[] signed = signature.sign(); return Base64.encode(signed); } catch (Exception e) { e.printStackTrace(); } return null; } }
Python相关RSA加密库: rsa, Crypto, M2Crypto;下面分别调研了使用rsa和Crypto实现RSA签名(代码中,pem就是RSA签名需要的私钥)。
利用rsa库
import base64 import rsa def sign(self, data): pri_key = rsa.PrivateKey.load_pkcs1(self.pem) signature = rsa.sign(str(data), priv_key=pri_key, hash='SHA-1') return base64.b64encode(signature)
利用Crypto库
import base64 from Crypto.Signature import PKCS1_v1_5 from Crypto.PublicKey import RSA from Crypto.Hash import SHA def sign(self, data): private_key = RSA.importKey(self.pem) cipher = PKCS1_v1_5.new(private_key) h = SHA.new(data) signature = cipher.sign(h) return base64.b64encode(signature)
相关内容
openssl生成PKCS#1格式
openssl genrsa -out rsa_private_key.pem 1024 openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
openssl生成PKCS#8格式
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt
python方式生成PKCS#1格式
import rsa (pubkey, privkey) = rsa.newkeys(1024) privkey.save_pkcs1('PEM') pubkey.save_pkcs1('PEM')
相关文章推荐
- python实现aes加密解密,RSA签名和验签,RSA加密解密,并调用接口
- 用Python实现RSA签名和验签
- python实现aes加密解密,RSA签名和验签,RSA加密解密,并调用接口
- Python下实现的RSA加密/解密及签名/验证功能示例
- Python实现微信好友签名词云的构建(itchat、jieba、wordcloud)
- PHP实现的MD5结合RSA签名算法实例
- python3个性签名设计实现代码
- 调用OpenSSL实现RSA加解密和签名操作
- python实现RSA加密(解密)算法
- java RSA/DSA/ECDSA实现数字签名
- 【python】利用sftp及rsa密匙实现远程拷贝文件
- JS RSA 签名实现
- python技巧(一)python中调用javascript进行rsa加密签名,并布署到docker上
- 开发支付宝支付用DELPHI实现 RSA签名
- C#实现RSA加密与解密、签名与认证
- Java实现SHA-256签名加密
- Python 实现完整的 RSA 算法
- C#中RSA加密解密和签名与验证的实现
- python 加密 解密 签名 验证签名 公钥 私钥 非对称加密 RSA
- openssl实现md5加rsa签名