首页 > 其他分享 >非对称加密(RSA)

非对称加密(RSA)

时间:2024-07-16 11:09:27浏览次数:6  
标签:加密 base64 RSA key encrypt 非对称 data

非对称加密(RSA)

非对称加密.加密和解密的秘钥不是同一个秘钥.这里需要两把钥匙.一个公钥,一个私钥.公钥发送给客户端.
发送端用公钥对数据进行加密.再发送给接收端,接收端使用私钥来对数据解密.由于私钥只存放在接受端这边.
所以即使数据被截获了.也是无法进行解密的.

公钥和私钥

常见的非对称加密算法:RSA,DSA等等,我们就介绍一个.RSA加密,也是最常见的一种加密方案

  1. 创建公钥和私钥
from Crypto.PublicKey import RSA

# 生成密钥对
key = RSA.generate(1024)

with open('rsa.public_key.pem', 'wb') as f:
    f.write(key.publickey().export_key())

with open('rsa.private_key.pem', 'wb') as f:
    f.write(key.export_key())
  1. 数据加密
# 公钥 加密 私钥 解密

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

data = "我喜欢你"
with open("rsa.public_key.pem", 'r') as f:
    public_key = f.read()
    # 构建一把公钥对象
    rsa = RSA.importKey(public_key)
    # 算法对象
    cipher = PKCS1_v1_5.new(rsa)
    # 数据加密
    encrypt_data= cipher.encrypt(data.encode())
    # base64编码
    base64_encrypt_data = base64.b64encode(encrypt_data)
    print('加密后:', base64_encrypt_data)
    print('加密后字符串:', base64_encrypt_data.decode())

解密

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


base64_encrypt_data = "KS6e5GzXN9lhSOtJnaF+MckXLgFI07nzyC1MvQmOaeIDzfAcPzcvyXftrpsZBjh9qWgbhKVMR31RRlWce16lh7iF1/uhHY/gxBDH5RYj1sifEjTrujdiFzNHwUFNdFtPfMO2U4QCLc5o1jp56+3E1guEKLanRHicfZ6cUkldUqY="

# 1. base64解码
base64_decrypt_data = base64.b64decode(base64_encrypt_data)

# 2.解密数据-----私钥
with open("rsa.private_key.pem", 'r') as f:
    private_key = f.read()

    # 构建一把私钥对象
    rsa_key = RSA.importKey(private_key)
    # 算法对象
    cipher = PKCS1_v1_5.new(rsa_key)
    # 数据解密
    decrypt_text = cipher.decrypt(base64_decrypt_data, None)
    # decrypt_text = cipher.decrypt(base64.b64decode(base64_encrypt_data), None)


    print(decrypt_text.decode('utf-8'))

标签:加密,base64,RSA,key,encrypt,非对称,data
From: https://www.cnblogs.com/a438842265/p/18304741

相关文章

  • AES加密
    对称加密(AES)AES是一种对称加密,所谓对称加密就是加密与解密使用的秘钥是一个。常见的对称加密:AES,DES,3DES.我们这里讨论AES。安装:pip install pycryptodomeAES加密最常用的模式就是CBC模式和ECB模式,当然还有很多其它模式,他们都属于AES加密。ECB模式和CBC模式俩者区别就......
  • 写真图片视频打赏系统源码全开源无加密
    这是一款开源的写真图片及视频打赏系统源码,顾名思义他可以做写真图片打赏站也可以做视频打赏站,支付对接了易支付,拥有独立代理后台,全部源码无加密,另外也可以配合付费进群使用。支付扣量、域名防洪这些基本的就不介绍了,看图吧!留给有需要的人!源码下载:图片视频打赏系统源码.zip可......
  • idea 出现[08S01] 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全
    目录1.问题所示2.原理分析3.解决方法1.问题所示idea配置Database的时候,出现如下问题:Failed  Copy SearchError Troubleshooting[08S01]驱动程序无法通过使用安全套接字层(SSL)加密与SQLServer建立安全连接。错误:“Theserverselectedprotoco......
  • ARFoundation系列讲解 - 94 Immersal 简介
    一、Immersal简介Immersal是一家专注于增强现实(AR)技术的公司,致力于开发和推广空间感知解决方案(简称:大空间技术)。他们的核心产品是一个名为ImmersalSDK的开发工具包,通过视觉定位(VPS)能够轻松地在现实世界中实现高精度的定位和增强现实体验。二、Immersal是如何工作的?Imme......
  • 使用gzexe加密shell脚本
    使用gzexe加密shell脚本是一个相对简单的过程。以下是具体的步骤:编写你的shell脚本:首先,你需要有一个shell脚本文件,比如myscript.sh。确保脚本可执行:使用chmod命令确保你的脚本文件是可执行的:chmod+xmyscript.sh使用gzexe加密脚本:在终端中,导航到脚本所在......
  • RSA对电话号码加解密的工具类
    RSA对电话号码加解密的工具类1.工具类如下importlombok.extern.slf4j.Slf4j;importorg.apache.commons.codec.binary.Base64;importjavax.crypto.Cipher;importjava.security.*;importjava.security.interfaces.RSAPrivateKey;importjava.security.interface......
  • Spring Boot项目Jar包加密详解
    目录引言Jar包加密的基础知识为什么需要加密Jar包Jar包加密的基本原理常用的Jar包加密工具ProGuardJavaguardJavaAgentSpringBoot项目Jar包加密实战使用ProGuard对SpringBoot项目进行加密集成Javaguard到SpringBoot项目中通过JavaAgent实现动态加密Jar包加密的......
  • 2024年五款企业加密软件(企业加密软件排行最新)
    关键是数字化时代,企业数据安全至关重要。一般来说信息技术快速发展,企业数据泄露风险上升。你知道的加密软件保护企业核心数据和商业机密,不可或缺。对我而言介绍几款企业加密软件,帮助选择适合需求的解决方案。固信加密软件https://www.gooxion.com/一.固信加密软件......
  • 加密算法详解:对称加密、非对称加密、Hash算法
    对称加密、非对称加密和哈希算法是信息安全中的三种主要加密技术,它们各自有不同的特点和用途:对称加密(SymmetricEncryption)工作原理:使用相同的密钥进行加密和解密。速度:通常非常快,适合大量数据的加密。密钥管理:参与通信双方必须安全地共享密钥,密钥泄露会导致安全风险。主......
  • 利用Selenium和PhantomJS绕过接口加密的技术探索与实践
    selenium+phantomjs绕过接口加密我们为什么需要selenium之前我们讲解了Ajax的分析方法,利用Ajax接口我们可以非常方便地完成数据的爬取。只要我们能找到Ajax接口的规律,就可以通过某些参数构造出对应的的请求,数据自然就能被轻松爬取到。但是,在很多情况下,Ajax请求的接口通......