栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python3 如何实现RSA加解密 MD5withRSA/SHA1withRSA/SHA256withRSA签名

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python3 如何实现RSA加解密 MD5withRSA/SHA1withRSA/SHA256withRSA签名

def RSA_sign(data): privateKey MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAIooE 9hmb6GvAUQ3j9FDRgrhWMmVWKepKNmQerrvovmySUSPzFHainDMl6HuQAWHCMI9O8S9kzqG3o9pnetpG7JShB6Oc9eX0kA6n0vLR2rYXNo5uVC29/Koqp250T7lzQ9bv6P0rkjIrqjTNIPVQXToyAwQcZQ5rVhUbtnP7YlAgMBAAECgYBpSzpGS0B9sPpDciOwXNQqA6FZe7G/w D l8TNYnaK8Y2Dr3ByAlerFJWi7hXVNwSivwTN4MnOvO3MMIha1gBnQCFStI4PjRv2qz6vsGfzZKFadUw3ngzGhT5UtIVAd IFbbr4J cGjGMmF5lIEaKrRCS5u4p11uf6LmhvbBTm0QJBAMQA7RYimdU9UStIm/RSkLQg6K89Om3S2AFXwqymiqhM4m6n7lRTE1xNX4pGm1BV8C/qL0d7AHbrJBFi hN5onMCQQC0cjAXmKdnfhTo0IvYtzpXr77odBz4zt2Ake65ssBJEWFzle69MbWgkbrTKLLjGxBwM C7fPDGNckqhlpjMGcHAkB vcKRT6p9svqrrHX8FO xKp6LwmHn5jD7HU6q6b47egvpVfnM2TNpujaPaXzBA/EeaqZL6IOyYfaer4vZ0At1AkEAqezuRQpIezlMT4I0b7z8gB7MVPMjZVrJVI4YlV8znJt1ffevfxMUy0Tw/nDRJPUTodX4yBZ8VuvHqPgknkuyeQJBALYpXGOH/GjlSVtnhq7eZxvoEqiBLawW5k7Rl1IyNdGR2qxY/nnoCyP2mMCs1Ba05sCcX08zzOzMPvttbSyjqPI private_keyBytes base64.b64decode(privateKey) priKey RSA.importKey(private_keyBytes) # priKey RSA.importKey(privateKey) signer PKCS1_v1_5.new(priKey,) # SIGNATURE_ALGORITHM MD5withRSA # hash_obj MD5.new(data.encode( utf-8 )) # SIGNATURE_ALGORITHM SHA1withRSA hash_obj SHA1.new(data.encode( utf-8 )) # SIGNATURE_ALGORITHM SHA256withRSA # hash_obj SHA256.new(data.encode( utf-8 )) signature base64.b64encode(signer.sign(hash_obj)) return signature if __name__ __main__ : data phone 15811352072 timestamp 1612496512540 device Android res_sign1 RSA_sign(data) signature res_sign1.decode( utf8 ) print(signature)

最后,我们来看下Java中的 SHA256withRSA 签名

package com.bkwallet.utils;
import java.nio.charset.StandardCharsets;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Signature;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.base64;
import java.util.HashMap;
import java.util.Map;
public class SignatureUtil {
 public static final String KEY_ALGORITHM RSA 
 public static final String SIGNATURE_ALGORITHM SHA256withRSA 
 private static final String UTF8 UTF-8 
 public static String gongyao MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCKKBPvYZm hrwFEN4/RQ0YK4VjJlVinqSjZkHq676L5sklEj 8xR2opwzJeh7kAFhwjCPTvEvZM6ht6PaZ3raRuyUoQejnPXl9JAOp9Ly0dq2FzaOblQtvfyqKqdudE 5c0PW7 j9K5IyK6o0zSD1UF06MgMEHGUOa1YVG7Zz 2JQIDAQAB 
 public static String miyao MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAIooE 9hmb6GvAUQ3j9FDRgrhWMmVWKepKNmQerrvovmySUSPzFHainDMl6HuQAWHCMI9O8S9kzqG3o9pnetpG7JShB6Oc9eX0kA6n0vLR2rYXNo5uVC29/Koqp250T7lzQ9bv6P0rkjIrqjTNIPVQXToyAwQcZQ5rVhUbtnP7YlAgMBAAECgYBpSzpGS0B9sPpDciOwXNQqA6FZe7G/w D l8TNYnaK8Y2Dr3ByAlerFJWi7hXVNwSivwTN4MnOvO3MMIha1gBnQCFStI4PjRv2qz6vsGfzZKFadUw3ngzGhT5UtIVAd IFbbr4J cGjGMmF5lIEaKrRCS5u4p11uf6LmhvbBTm0QJBAMQA7RYimdU9UStIm/RSkLQg6K89Om3S2AFXwqymiqhM4m6n7lRTE1xNX4pGm1BV8C/qL0d7AHbrJBFi hN5onMCQQC0cjAXmKdnfhTo0IvYtzpXr77odBz4zt2Ake65ssBJEWFzle69MbWgkbrTKLLjGxBwM C7fPDGNckqhlpjMGcHAkB vcKRT6p9svqrrHX8FO xKp6LwmHn5jD7HU6q6b47egvpVfnM2TNpujaPaXzBA/EeaqZL6IOyYfaer4vZ0At1AkEAqezuRQpIezlMT4I0b7z8gB7MVPMjZVrJVI4YlV8znJt1ffevfxMUy0Tw/nDRJPUTodX4yBZ8VuvHqPgknkuyeQJBALYpXGOH/GjlSVtnhq7eZxvoEqiBLawW5k7Rl1IyNdGR2qxY/nnoCyP2mMCs1Ba05sCcX08zzOzMPvttbSyjqPI 
 public static Map String, String genPair() throws Exception {
 HashMap hashMap new HashMap(4);
 KeyPairGenerator instance KeyPairGenerator.getInstance( RSA 
 instance.initialize(1024);
 KeyPair generateKeyPair instance.generateKeyPair();
 PrivateKey privateKey generateKeyPair.getPrivate();
 PublicKey publicKey generateKeyPair.getPublic();
 String str new String(base64.getEncoder().encode(privateKey.getEncoded()));
 String str2 new String(base64.getEncoder().encode(publicKey.getEncoded()));
 hashMap.put( sk , str);
 hashMap.put( pk , str2);
 return hashMap;
 public static String sign(byte[] bArr, String str) throws Exception {
 PrivateKey generatePrivate KeyFactory.getInstance( RSA ).generatePrivate(new PKCS8EncodedKeySpec(base64Utils.base64ToChar(str)));
 Signature instance Signature.getInstance(SIGNATURE_ALGORITHM);
 instance.initSign(generatePrivate);
 instance.update(bArr);
 return base64Utils.byteArrayTobase64(instance.sign());
 public static boolean verify(String str, String str2, String str3) throws Exception {
 Signature instance Signature.getInstance(SIGNATURE_ALGORITHM);
 instance.initVerify((RSAPublicKey) KeyFactory.getInstance( RSA ).generatePublic(new X509EncodedKeySpec(base64.getDecoder().decode(str2))));
 instance.update(str.getBytes(StandardCharsets.UTF_8));
 return instance.verify(base64.getDecoder().decode(str3));
 public static void main(String[] strArr) throws Exception {
 Map String, String genPair genPair();
 String str genPair.get( sk 
 System.out.println(str);
 System.out.println(genPair.get( pk 
 System.out.println( ---------------- 
 System.out.println(sign( { phone : 13629794569 , timestamp :1630000000000, device : Android } .getBytes( UTF-8 ), str));
}
三、python实现SHA256withRSA 签名
from Crypto.PublicKey import RSA
from Crypto.Signature import PKCS1_v1_5
from Crypto.Hash import MD5, SHA1, SHA256
import base64
from flask import current_app
import warnings
warnings.filterwarnings( ignore )
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/268062.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号