使用Python实现RSA加密

这篇具有很好参考价值的文章主要介绍了使用Python实现RSA加密。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

       RSA加密是一种非常常用的加密算法,该算法基于以下原理:求解两个大素数的积非常容易,但是对两个大素数的积进行因式分解比较困难。以下程序有三个功能:生成RSA私钥和公钥;根据给出的文件路径和文件名加密数据;根据给出的文件路径和文件名进行解密。

       读入文件后,若文件内容较长,则一次读入96个字符,循环读取,直到加密完毕,将文件中的原内容抹去,放入加密的内容;解密过程同理。

"""
使用RSA加密,密钥长度为3072位
"""

from Crypto import Random
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
import base64


# 初始化
def generate():
    # 伪随机数生成器
    random_generator = Random.new().read
    # rsa算法生成实例
    rsa = RSA.generate(3072, random_generator)
    private_pem = rsa.exportKey()
    with open('master-private.pem', 'wb') as f:
        f.write(private_pem)
    # 过的公钥并保存
    public_pem = rsa.publickey().exportKey()
    with open('master-public.pem', 'wb') as f:
        f.write(public_pem)
    print("公钥和私钥已放在程序同名文件夹下")


#加密
def rsa_encrypt(message, key):
        rsakey = RSA.importKey(key)  # 导入读取到的公钥
        cipher = PKCS1_v1_5.new(rsakey)  # 生成对象
        # 通过生成的对象加密message明文,注意,在python3中加密的数据必须是bytes类型的数据,不能是str类型的数据
        cipher_text = base64.b64encode(cipher.encrypt(message.encode("utf-8")))
        return cipher_text


# 解密
def rsa_decrypt(cipher_text, key):
        rsakey = RSA.importKey(key)  # 导入读取到的私钥
        cipher = PKCS1_v1_5.new(rsakey)  # 生成对象
        # 将密文解密成明文,返回的是一个bytes类型数据,需要自己转换成str
        text = cipher.decrypt(base64.b64decode(cipher_text), "ERROR")
        return text


def main():
    bytesLength = 96
    cryptostr = ""
    decryptostr = ""
    print("请选择需要的功能:")
    print("1. 生成私钥和公钥")
    print("2. 加密数据")
    print("3. 解密数据")
    SelectFlag = input("输入数字选择功能(1,2 or 3): ")
    match SelectFlag:
        case '1':
            generate()
        case '2':
            print("---------------加密开始---------------")
            filepath = input("请输入文件路径和文件名:")
            keypath = input("请输入公钥路径和文件名:")
            with open(keypath, 'r', encoding="utf-8") as publicfile:
                key = publicfile.read()
            with open(filepath, 'r+', encoding="utf-8") as fileSource:
                fileContent = fileSource.read()
                index = 0
                while index <= len(fileContent):
                    charFrame = fileContent[index:(index + bytesLength)]
                    cipher_text = rsa_encrypt(charFrame, key)
                    cryptostr = cryptostr + str(cipher_text) + "\n\n"
                    index = index + bytesLength
                fileSource.seek(0)
                fileSource.truncate()    # clear the file
                fileSource.write(cryptostr)
        case '3':
            print("---------------解密开始---------------")
            filepath = input("请输入文件路径和文件名:")
            keypath = input("请输入私钥路径和文件名:")
            with open(keypath, 'r', encoding="utf-8") as privatefile:
                privatekey = privatefile.read()
            with open(filepath, 'r+', encoding="utf-8") as fileSource:
                fileContent = fileSource.read()
                decrypptolist = fileContent.split('\n\n')
                index = 0
                while index < len(decrypptolist) and decrypptolist[index] != "":
                    decipher_text = rsa_decrypt(decrypptolist[index][1:-1], privatekey)
                    decryptostr = decryptostr + decipher_text.decode('utf-8')
                    index = index + 1
                fileSource.seek(0)
                fileSource.truncate()  # clear the file
                fileSource.write(decryptostr)
        case _:
            print("请选择三个功能中的一个")


main()

代码参考以下网站,若有侵权,请私信作者删除:

pycryptodemo实现DES,AES, RC4,Hash,RSA,DSA | 码农家园 (codenong.com)文章来源地址https://www.toymoban.com/news/detail-740086.html

到了这里,关于使用Python实现RSA加密的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python RSA加密解密

    一、RSA加密算法 RSA加密算法是一种非对称加密算法,加密的秘钥是由公钥和私钥两部分组成秘钥对,公钥用来加密消息,私钥用来解密消息,公钥是公开的,给对方进行加密,私钥则是用户自己保留,用来对加密的数据进行解密。 公钥pem文件格式:以-----BEGIN PUBLIC KEY-----标记

    2024年02月10日
    浏览(47)
  • 【华为OD机考 统一考试机试C卷】素数之积/RSA加密算法(C++ Java JavaScript Python C语言)

    目前在考C卷,经过两个月的收集整理, C卷真题已基本整理完毕 抽到原题的概率为2/3到3/3, 也就是最少抽到两道原题。 请注意:大家刷完C卷真题,最好要把B卷的真题刷一下,因为C卷的部分真题来自B卷。 另外订阅专栏还可以联系笔者开通在线OJ进行刷题,提高刷题效率。

    2024年03月21日
    浏览(46)
  • Jmeter二次开发实现rsa加密

    jmeter函数助手提供了大量的函数,像 counter、digest、random、split、strLen,这些函数在接口测试、性能测试中大量被使用,但是大家在实际工作,形形色色的测试需求不同,导致jmeter自带或者扩展插件给我们提供的函数无法全部满足,这个时候我们就可以自己动手, 对JMeter进行

    2024年02月08日
    浏览(42)
  • 教你用python写RSA加密算法

    RSA加密算法是一种非对称加密算法,即使用不同的密钥进行加密和解密。它是由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)在1977年提出的,是目前最广泛使用的公钥加密算法之一 。 RSA加密算法的原理是基于数论中的一个难题:

    2024年02月09日
    浏览(44)
  • C语言实现简单加密算法 凯撒密码 RSA算法 简介及实现

    凯撒密码的核心思想就是移位。 将明文的每一个字符 在 密码系统所支持字符序列中向右平移N,映射得到新的字符从而实现加密,而解密则相反向左平移N。加密的Key即为N。 加密  解密 在如今的万维网环境中,如果A要向B发送数据,需要先加密这个数据,因为在一些不安全

    2024年02月08日
    浏览(53)
  • C语言中的 RSA加密和解密算法: 深度探索与实现

    RSA加密算法是一种非对称加密算法,即公开密钥加密,私有密钥解密。在公开密钥加密和私有密钥解密的过程中,密钥是不同的,这是与其他加密算法的主要区别。RSA算法的安全性依赖于大数分解,随着计算机的发展,对于大数的分解能力越来越强,RSA算法的密钥长度也在不

    2024年02月03日
    浏览(54)
  • 使用非对称加密(RSA) 实现前端加密后端解密

    数据加密方式有: 单向加密、对称加密、非对称加密、加密盐、散列函数、数字签名。 1、单向加密 单向加密通过对数据进行摘要计算生成密文,密文不可逆推还原。只能加密,不能解密,常用于提取数据的指纹信息以此来验证数据的完整性。但是会引发雪崩效应(雪崩效应

    2024年02月08日
    浏览(69)
  • vue使用jsencrypt实现rsa前端加密

    介绍 vue 完成 rsa 加密传输, jsencrypt 实现参数的前端加密 在 utils 文件夹中新建 jsencrypt.js 文件,内容如下: 注意点:一般公钥都是后端生成好的,之间给到前端,需要注意的需要让后端把生成的公钥放入 .txt 文件中。把 .txt 文件给前端,否则可能会出现无法使用的可能

    2024年02月09日
    浏览(57)
  • 【RSA加密/解密】PKCS1_OAEP和PKCS1_v1_5两种填充方案【python RSA密钥对生成、密码加密、密文解密、pycharm安装Crypto】

    一、PKCS1_OAEP和PKCS1_v1_5是公钥加密标准中的两种填充方案。 PKCS1_OAEP(Optimal Asymmetric Encryption Padding)是一种更安全的填充方案,它提供了更好的安全性和抗攻击性。它使用随机数进行填充,并引入了哈希函数来增加安全性。 PKCS1_v1_5是较旧的填充方案,它使用固定的填充字节序

    2024年02月06日
    浏览(61)
  • 从加密到签名:如何使用Java实现高效、安全的RSA加解密算法?

    目录 1. 接下来让小编给您们编写实现代码!请躺好 ☺ 1.1 配置application.yml文件 1.2 RSA算法签名工具类 1.3  RSA算法生成签名以及效验签名测试 1.4 RSA算法生成公钥私钥、加密、解密工具类 1.5 RSA算法加解密测试 我们为什么要使用RSA算法来进行加解密?  RSA 加密算法是一种非对

    2024年02月12日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包