rsa对数据库关键数据加密处理
一 需要用到的包
import base64
import binascii
import rsa
二 生成非堆成加密的公钥和私钥
下面展示一些 内联代码片
。
def generate_keys():#生成公钥和密钥的位数public_key, private_key = rsa.newkeys(1024)#保存公钥pub = public_key.save_pkcs1()#生成公钥的文件public_file = open('public.pem', 'wb')public_file.write(pub)public_file.close()#保存私钥,并且写入文件中pri = private_key.save_pkcs1()private_file = open('private.pem','wb')private_file.write(pri)private_file.close()
三 对关键数据进行加密
下面展示一些 内联代码片
。
#传入关键数据
def public_key(secret):
#读取公钥with open('public.pem','rb') as pf:pub = pf.read()#加载公钥pubkey = rsa.PublicKey.load_pkcs1(pub)#这步编码是必须的,只对字节操作,不对字符操作messages = secret.encode('utf-8')#使用公钥加密消息,为了让加密更加安全在d后面添加自己自带的字节,这样子带有独特性,别人无法解密crypto = rsa.encrypt(messages,pubkey)+b'dhf'#经过base64编码,虽然也是字节形式,但可以解码成unicode,如果直接把字节形式的crypto返回,存入数据库后会是没问题,再提取出来就会变成str,然后需要转成字节形式才能解密,但是转字节会出错,变成了b'b'''的形式。crypto = base64.b64encode(crypto)#print('base64编码')#print(crypto)#变成unicode形式存放进数据库中crypto = crypto.decode()#print('解码成unicode')#print(crypto)return crypto
四 对加密的数据进行解密
下面展示一些 内联代码片
。
def private_key(crypto):with open('private.pem','rb') as prf:#加载私钥pri = prf.read()prikey = rsa.PrivateKey.load_pkcs1(pri)#先把从数据库提取出来的加密str转回字节形式,其实这一步不是必须的,对于base64来说,str也是可以解码的(不知道为什么)crypto=crypto.encode()# print(crypto)#进行base64的解码,得到加密的字节crypto = base64.b64decode(crypto)#print('base64解码')#print(crypto)# 私钥解密消息,要先移除自己添加的特定字节crypto = crypto.split(b'dhf')[0]#(crypto)#到了这一步,已经可以解密回去了,得到字节形式的正确messagemessage = rsa.decrypt(crypto,prikey)#print(message)#转回unicodemessage = message.decode('utf-8')#print(message)return message
五 调用rsa进行加密解密
generate_keys()
a = public_key(str(119811))
b = private_key(a)user_name = obj.cleaned_data['pname']
user_name = secretary.public_key(user_name)professional_name = professional.pname
professional_name = secretary.private_key(crypto=professional_name)
rsa对数据库关键数据加密处理相关推荐
- java数据加密解密代码_java使用RSA加密方式实现数据加密解密的代码
RSA的应用 RSA是一种非对称加密算法.现在,很多登陆表单的密码的都采用RSA加密,例如京东中的登陆使用公钥对密码进行加密 java使用RSA加密方式实现数据加密解密,需要首先产生私钥和公钥 测试代 ...
- java使用RSA加密方式实现数据加密解密
全栈工程师开发手册 (作者:栾鹏) java教程全解 java使用RSA加密方式实现数据加密解密,需要首先产生私钥和公钥 测试代码 public static void main(String arg ...
- java rsa 存数据库_java – 如何创建RSA密钥对以便将其存储在数据库中?
我正在尝试实现变异加密算法(理论上由我开发)并作为需求的一部分,我需要生成一个RSA密钥对并将其存储在数据库中,以便以后作为加密过程的一部分进行检索(仅用于加密会话密钥,以便可以使用加密的消息安全地发 ...
- springboot数据库敏感数据加密解密
低价云服务器 链接->>> 开发云 - 一站式云服务平台 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:ht ...
- 《计算机是怎样跑起来的》矢泽久雄 读书笔记(关于数据库,数据加密,XML和CSV)
文章目录 计算机的三大原则 关于Java 和.NET 数据库 设计数据库 通过拆表和整理数据实现规范化 用主键和外键在表间建立关系 索引能够提升数据的检索速度 设计用户界面 向DBMS 发送CRUD ...
- Amazon Aurora(SIGMOD 2018)云数据库关键技术解读
说在前面 本文主要介绍 <Amazon Aurora: On Avoiding Distributed Consensus for I/Os, Commits, and Membership C ...
- MPP数据库关键特性浅议-高可用性
MPP数据库必须具备良好的可用性,尤其在金融.交通行业等关系国计民生的重要行业应用上,对RPO和RTO这两个关键指标的要求都很高.MPP数据库的产品架构决定了产品的可用性,目前市面上产品架构扩展性最强 ...
- 信息加密存储服务器,数据库加密系统,实现数据库信息安全,数据加密
[导读] 随着信息产业的加快开展,企业越来越认识到数据库信息安全的重要性.本文简单的介绍了一下数据库加密技术在企业信息安全中的基本应用. 企业需要保证计算机数据库信息网络安全,以确保重要信息不被侵害, ...
- 数据库关键字问题mysql 运行sql语句check关键字报错
mysql 运行sql语句check关键字报错.出错:因为check为 mysql的保留关键字,改名即可. 遇到数据库语句问题可以参考下这个问题,之前的access数据库用的check作为表明,代码迁 ...
最新文章
- (连续)周期信号的傅里叶级数(FS)
- 重磅 | Dragonfly 晋升成为 CNCF 孵化项目
- 利用System.Net.Mail 的SmtpClient发送邮件
- Spring MVC学习总结(8)——Swagger入门详解
- 前端调用3dmax模型转换.gltf格式
- 最简单的YUV422转jpg的例程
- Ambari技术介绍-尚硅谷大数据培训
- android开机动画多长时间_Android 开机动画启动过程详解
- windows补丁下载地址
- 闲鱼最新选品技巧,快速帮你找到爆款!
- 千兆网线交叉线接法(有图)
- 内功图说--十二段锦
- 第一模块-开发基础-第一章python语法
- html图片左侧留白,HTML+CSS布局img图片元素出现空白的问题
- 分享几个好用的导航导航网站
- 自己做游戏(一)-PhotonServer配置
- 【小白】【大学】一名嵌入式软件开发小白的单片机学习历程、心路历程、经验分享
- BZOJ 3699 GAL的数组
- 计算机二本院校排名民办河北,2018河北二本大学排名
- 苹果几是双卡双待_苹果史上首款实体双卡双待小屏iPhone诞生,值得入手吗?
热门文章
- 哈工大数据库系统(上):关系模型之基本概念(三)课后测验与作业
- 爬取百度贴吧---迪丽热巴吧网页并保存爬取下来的网页在本地
- 计算机技术发展特点分为多极化,新形势下计算机技术的发展趋势研究
- python中difference_Python 集合 symmetric_difference() 使用方法及示例
- 关于颁布总承包服务费标准的通知
- APEX V2.0 - ANGULAR 5+ BOOTSTRAP 4 HTML ADMIN TEMPLATE启动报错解决办法
- Linux系统介绍及熟悉Linux基础操作
- 【2022年 华为上海无线部门实习 逻辑岗位 面试复盘】
- 个人收藏的50部经典UMD电影的ISO镜像文件
- ​​​​​​​PowerPoint快捷键