python RSASHA1加密

from Crypto.PublicKey import RSA
from Crypto.Signature import PKCS1_v1_5
from Crypto.Hash import SHA
import base64
import warnings

warnings.filterwarnings("ignore")


def get_signature(test1, test2):
    private_key = """MIICXQIBAAKBgQCVRVDNAAPMk3vHrh9KIdr3LRptz2vuq6XH5DQiZq5fPYjD6nm8
fMrL9gk+VJiANTj77Y3kN75SXjpYj2Ptx/vmsuDffZvGEMK7vHHVWbURCaZUTEbM
CfIw5/94a56R51fS5X6mgBVryqLenUy+y5VfsYcRZn50XWId/3c9T7UQdQIDAQAB
AoGAW3h+ayD3MwWtdE9fHS5h39XjvCa/HSJSFIvi5rHFaNdsV6H3t2lBXHsIbwmn
6eizYq3PpWoDVrYnSt2TfsJtuaGKFxYogPO50J91onxqHoCF1hIHED88/XTZdYDb
PeKN5SQU+nOTV+fF1SWJsXhN7CncW0K8d+hJ9fJM/M+LcoECQQDGD70GVYZdPjIi
Plu2C/WRRs2NJU6A9O5KR0/a7i0oVkzC9RX1M4VNfXhO4rD32ZZU7MardWbWE1Da
8bmmngZnAkEAwO/HfMja9Qer6h946Yv4US444GYDt2nNAe721E4UzGTQrbElma9x
buGyUeOvkt7X5aAswDAMRjmZJors8DpQwwJAUgFsM3Yv1uWMnm8RS/PxrkARlZJP
yccf7rNOFgitu9jXmZUejVLSq736lTb5LPXzb6BFtfI7LQH8ZVrWkm01mwJBAI48
d2nkPZ+k/zWD7ETpHrDijaXJL3Y5Npz1Sdzsj2K79CgIz/qEH/EpzKeYXqi9RpcP
xc4N3g6rid+jTdgwdbcCQQCLMw/BSJJsKe8Croqgo8e3mfcTelC+jiXWVm1G/HkL
GCtgsC7VRGsoyj3hMaiujCu16eg0hAMPWd15PDRvWxHj"""
    sign_str = "test1=" + "%s" % test1 + "&" + \
               "test2=" + "%s" % test2

    private_key_bytes = base64.b64decode(private_key)

    pri_key = RSA.importKey(private_key_bytes)

    signer = PKCS1_v1_5.new(pri_key, )

    hash_obj = SHA.new(sign_str.encode('utf-8'))

    signature1 = base64.b64encode(signer.sign(hash_obj))

    signature = signature1.decode('utf-8')
    print(signature)


if __name__ == '__main__':
    get_signature("test1", "test2")
RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年发明。在Python中,我们可以使用内置库`cryptography`或第三方库`pycryptodome`来实现RSA公钥加密。 **RSA原理概述:** 1. **密钥生成**:RSA算法基于大数分解难题,它包含一对密钥,即公钥和私钥。公钥用于加密,而私钥用于解密。 2. **加密过程**:发送方使用接收方的公钥对明文进行加密,接收方无法用公钥直接解密。 3. **解密过程**:只有拥有私钥的人才能解密使用公钥加密的信息。 **Python实现示例(使用cryptography库):** ```python from cryptography.hazmat.primitives.asymmetric import rsa from cryptography.hazmat.primitives import serialization, hashes from cryptography.hazmat.primitives.asymmetric import padding # 生成RSA密钥对 key_pair = rsa.generate_private_key(public_exponent=65537, key_size=2048) # 公钥和私钥 public_key = key_pair.public_key() private_key = key_pair # 加密数据 message = b'Secret message' ciphertext = public_key.encrypt( message, padding.OAEP( mgf=padding.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None ) ) # 解密数据 plaintext = private_key.decrypt(ciphertext) ``` **相关问题--:** 1. RSA算法的安全基础是什么? 2. 如何确保使用Python RSA加密的数据只可由拥有正确私钥的人解密? 3. `cryptography`库中的`OAEP`和`MGF1`分别代表什么? 4. 如果丢失了RSA的私钥,如何安全地生成新的私钥对?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值