rsa 对数据进行加密和解密

#!/usr/bin/env python
# coding=utf-8 """
pip3 install rsa
""" import rsa
import base64 # ######### 1. 生成公钥私钥 #########
pub_key_obj, priv_key_obj = rsa.newkeys(1024) # 128 - 11 = 117
# 公钥字符串
pub_key_str = pub_key_obj.save_pkcs1()
pub_key_code = base64.standard_b64encode(pub_key_str)
print(pub_key_code)
# 私钥字符串
priv_key_str = priv_key_obj.save_pkcs1()
priv_key_code = base64.standard_b64encode(priv_key_str)
print(priv_key_code) # # ######### 2. 用公钥加密 #########
def encrypt(pub_key_code,value):
"""
:param pub_key_code: 公钥
:param value: 要加密的数据
:return: 成功加密的数据
"""
key_str = base64.standard_b64decode(pub_key_code)
pk = rsa.PublicKey.load_pkcs1(key_str)
result = rsa.encrypt(value.encode('utf-8'), pk)
return result data = encrypt(pub_key_code,'liyp')
print(data) # # ######### 3. 用私钥解密 #########
def decrypt(priv_key_code,value):
"""
:param priv_key_code: 私钥
:param value: 要解密的数据
:return: 成功解密的数据
"""
key_str = base64.standard_b64decode(priv_key_code)
pk = rsa.PrivateKey.load_pkcs1(key_str)
val = rsa.decrypt(value, pk)
return val origin = decrypt(priv_key_code,data)
print(origin.decode('utf-8'))

但是对长字符串(超过117位的字符串进行加密)就会出现异常,需要对长字符串进行切割,进行加密然后将加密的数据进行拼接。解密也是如此 

# ######### 1. 生成公钥私钥 #########
pub_key_obj, priv_key_obj = rsa.newkeys(1024) # 128 - 11 = 117
# 公钥字符串
pub_key_str = pub_key_obj.save_pkcs1()
pub_key_code = base64.standard_b64encode(pub_key_str)
print(pub_key_code)
# 私钥字符串
priv_key_str = priv_key_obj.save_pkcs1()
priv_key_code = base64.standard_b64encode(priv_key_str)
print(priv_key_code) value = 'liyp' * 30
# # ######### 2. 用公钥加密 #########
def big_encrypt(pub_key_code,value):
"""
:param pub_key_code: 公钥
:param value: 要加密的数据
:return: 成功加密的数据
"""
big_list = []
key_str = base64.standard_b64decode(pub_key_code)
pk = rsa.PublicKey.load_pkcs1(key_str)
for item in range(0,len(value),117):
chunk = value[item:item+117]
result = rsa.encrypt(chunk.encode('utf-8'), pk)
big_list.append(result)
return b''.join(big_list) data = big_encrypt(pub_key_code,value)
print(data) # ######### 3. 用私钥解密 #########
def big_decrypt(priv_key_code,value):
"""
:param priv_key_code: 私钥
:param value: 要解密的数据
:return: 成功解密的数据
"""
big_list = []
key_str = base64.standard_b64decode(priv_key_code)
pk = rsa.PrivateKey.load_pkcs1(key_str)
for item in range(0,len(value),128):
chunk = value[item:item+128]
val = rsa.decrypt(chunk, pk)
big_list.append(val)
return b''.join(big_list) ret = big_decrypt(priv_key_code,data)
print(ret.decode('utf-8'))

  

 

ras 加密及解密的更多相关文章

  1. RAS 加密 解密

    蚂蚁金服电话面试时,问到了RAS加密解密,感觉回答的有点模糊,遂写个例子加深一下印象 package cheng.test.cipher;import java.io.FileInputStream; ...

  2. Java加密与解密笔记(三) 非对称加密

    非对称的特点是加密和解密时使用的是不同的钥匙.密钥分为公钥和私钥,用公钥加密的数据只能用私钥进行解密,反之亦然. 另外,密钥还可以用于数字签名.数字签名跟上文说的消息摘要是一个道理,通过一定方法对数据 ...

  3. 信息安全-加密:RAS 加密

    ylbtech-信息安全-加密:RAS 加密 1.返回顶部 1. RSA 是不对称的加密(加密密钥和解密密钥不同  其中 一个为公钥,一个为私钥): 公钥和私钥的产生是基于一对很大的素数(十进制来说 ...

  4. ASP.NET加密和解密数据库连接字符串

    大家知道,在应用程序中进行数据库操作需要连接字符串,而如果没有连接字符串,我们就无法在应用程序中完成检索数据,创建数据等一系列的数据库操作.当有人想要获取你程序中的数据库信息,他首先看到的可能会是We ...

  5. 命令行工具aspnet_regiis.exe实现加密和解密web.config

    命令行工具aspnet_regiis.exe,是一个类似于DOS的命令工具,称之为命令解释器.使用命令行工具加密和解密web.config文件中的数据库连接字符串时,只需要简单的语法命令即可. 加密语 ...

  6. 使用EncryptByPassPhrase和DecryptByPassPhrase对MS SQLServer某一字段时行加密和解密

    在数据库实现加密与解密的文章,Insus.NET较早前也有写过,可以在本博客中可以搜索得到. 今天使用EncryptByPassPhrase和DecryptByPassPhrase来简单实现. 在数据 ...

  7. AES —— JAVA中对称加密和解密

    package demo.security; import java.io.IOException; import java.io.UnsupportedEncodingException; impo ...

  8. 通过ios实现RSA加密和解密

    在加密和解密中,我们需要了解的知识有什么事openssl:RSA加密算法的基本原理:如何通过openssl生成最后我们需要的der和p12文件. 废话不多说,直接写步骤: 第一步:openssl来生成 ...

  9. PHP 使用 mcrypt 扩展中的 mcrypt_encrypt() 和 mcrypt_decrypt() 对数据进行加密和解密

    <?php /* 使用 mcrypt 扩展中的 mcrypt_encrypt() 和 mcrypt_decrypt() 对数据进行加密和解密 */ // 加密 $algorithm = MCRY ...

随机推荐

  1. 从输入URL到页面加载全过程

    从简单讲: 1.  DNS域名解析:2.  建立TCP连接:3.  发送HTTP请求:4.  返回响应结果:5.  关闭TCP连接:6.  浏览器解析HTML:7.  浏览器布局渲染: 大家基本上都知 ...

  2. vue-cli中模拟数据的两种方法

    我所使用的是新版vue-cli 首先进行所需插件的安装,vue-resource,json-server,proxyTable. 目录结构如图 在main.js中引入vue-resource模块,Vu ...

  3. SOA架构分析

    SOA架构的定义: 面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来.接口是采用中立的方式进行定义的,它应该独立于 ...

  4. java 获取随机数的方法

    方法一: (数据类型)(最小值 + Math.random()*(最大值-最小值+1) ); 示例: (int)(1+Math.random()*(10-1+1)): 获取int类型 1-10的随机数 ...

  5. SparkSQL之UDF使用

    package cn.piesat.test import org.apache.spark.sql.SparkSession import scala.collection.mutable.Arra ...

  6. noi.ac#458 sequence

    题目链接:戳我 蒟蒻的第一道子序列自动机! 给定两个01串A,B,求一个最短的01串,要求C不是A,B的子序列.要求如果同样短,输出字典序最小的. 那么我们先构建A,B两个串的子序列自动机.然后我们设 ...

  7. flask框架(八): 响应和请求

    from flask import Flask from flask import request from flask import render_template from flask impor ...

  8. PCI-CAN卡驱动与数据通信调试小记

    以前做项目,不注意记录调试过程中遇到的问题,以后应该注意这一点.今天抽空总结一下PCI-CAN卡驱动与数据通信调试过程中遇到的问题,方便以后回忆和思考. 1. 中断服务之字节流报文组包状态机 这是一个 ...

  9. 【译】XMLHttpRequest和Fetch, 谁最适合AJAX?

    原文地址:https://www.sitepoint.com/xmlhttprequest-vs-the-fetch-api-whats-best-for-ajax-in-2019/ 目录 从AJAX ...

  10. postgresql-基础-1

    概述 层状关系 网状关系 关系型数据库 关系型数据库 ​ 元祖:代表一行 ​ 属性:代表一列 ​ 主码:唯一确定一个元组的属性组,即主键 ​ 域:属性的取值范围 ​ 分量:元组中的一个属性值,即某一行 ...