python实现从证书中提取公私钥信息及公私钥加解密

简述:公钥加密:发送者用公钥对传送数据进行加密私钥解密:接收者用私钥对接收数据进行解密公钥和私钥必须是一对,公钥是公开的,任何都可以知道;私钥是保密的,不可以泄露和被窃取;from ReapalApi.config.project_var import *from OpenSSL import cryptoclass ReadKey(object): """用于读...
摘要由CSDN通过智能技术生成

简述:

公钥加密:发送者用公钥对传送数据进行加密

私钥解密:接收者用私钥对接收数据进行解密

公钥和私钥必须是一对,公钥是公开的,任何都可以知道;私钥是保密的,不可以泄露和被窃取;

from ReapalApi.config.project_var import *
from OpenSSL import crypto

class ReadKey(object):

    """用于读取密钥"""

    @staticmethod
    def get_public_key(cer_file_path):
        """
        从cer证书中提取公钥
        :param cer_file: cer证书存放的路径
        :return: 公钥
        """
        cert = crypto.load_certificate(crypto.FILETYPE_ASN1, open(cer_file_path, "rb").read())
        res = crypto.dump_publickey(crypto.FILETYPE_PEM, cert.get_pubkey()).decode("utf-8")
        return res.strip()


    @staticmethod
    def get_private_key(pfx_file_path,password="123456"):
        """
        从pfx证书中提取私钥,如果证书已加密,需要输入密码
        :param pfx_file_path:pfx证书存放的路径
        :param password:证书密码
        :r
  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: Python RSA 加密和解密文件的基本流程如下: 1. 使用 RSA 库生成公钥私钥。 2. 使用公钥文件进行加密。 3. 使用私钥对加密后的文件进行解密。 示例代码: ``` from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_OAEP # 生成公钥私钥 key = RSA.generate(2048) private_key = key.export_key() public_key = key.publickey().export_key() # 使用公钥加密文件 with open("original_file.txt", "rb") as f: original_data = f.read() cipher = PKCS1_OAEP.new(RSA.import_key(public_key)) encrypted_data = cipher.encrypt(original_data) with open("encrypted_file.bin", "wb") as f: f.write(encrypted_data) # 使用私钥解密文件 with open("encrypted_file.bin", "rb") as f: encrypted_data = f.read() cipher = PKCS1_OAEP.new(RSA.import_key(private_key)) decrypted_data = cipher.decrypt(encrypted_data) with open("decrypted_file.txt", "wb") as f: f.write(decrypted_data) ``` 请注意,上面的代码仅用于示例目的,实际应用需要注意密钥的安全存储。 ### 回答2: RSA加密算法是一种非对称加密算法,它使用一对相互关联的公钥私钥进行加解密公钥用于加密数据,而私钥用于解密数据。 在使用Python进行RSA加解密文件时,我们首先需要生成一对私钥。可以使用`rsa`库的`newkeys()`函数来生成密钥对。例如,以下代码将生成一对2048位的私钥: ``` from rsa import newkeys # 生成一对私钥 (pub_key, priv_key) = newkeys(2048) ``` 接下来,我们可以使用私钥进行文件加解密操作。以下是一个使用RSA加解密文件的示例代码: ``` from rsa import encrypt, decrypt # 加密文件 def encrypt_file(file_path, output_path, pub_key): with open(file_path, 'rb') as file: data = file.read() enc_data = encrypt(data, pub_key) with open(output_path, 'wb') as output_file: output_file.write(enc_data) # 解密文件 def decrypt_file(file_path, output_path, priv_key): with open(file_path, 'rb') as file: enc_data = file.read() dec_data = decrypt(enc_data, priv_key) with open(output_path, 'wb') as output_file: output_file.write(dec_data) ``` 在使用以上代码时,需要指定待加密的文件路径、加密后的文件输出路径以及公私钥。可以通过`pub_key.save_pkcs1()`和`priv_key.save_pkcs1()`方法将密钥保存到文件以便后续使用。 需要注意的是,RSA加密算法会对数据进行分块加解密,因此对于较大的文件,可能需要分块加密再拼接。另外,RSA加密算法的运算耗时较长,因此在实际使用可能需要将其用在对安全性要求较高的场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值