生成公钥的私钥:

# -*- coding: UTF-8 -*-
import rsa
import base64 (public_key, private_key) = rsa.newkeys(1024)
print(chr(10)+"公钥:")
print(public_key.save_pkcs1())
print(chr(10)+"公钥:")
print(public_key.save_pkcs1())

执行结果:

公钥:
-----BEGIN RSA PUBLIC KEY-----
MIGJAoGBAI0g4ds76htToOb2nrI65L2S5slIe4ZEedbp+vrZq71juhiGZipmYWic
AfQFKrDiaAlVvT+GY7l9neXXpnjbpUVOV2O7BZy0KOtAKySyAxZyuXUA6KHn1xN+
wwjyttj2uXH4s74mgBaUiwvWTHO0CJEWFQ5xMOQyqQosiVFn9AqFAgMBAAE=
-----END RSA PUBLIC KEY----- 公钥:
-----BEGIN RSA PRIVATE KEY-----
MIICYQIBAAKBgQCNIOHbO+obU6Dm9p6yOuS9kubJSHuGRHnW6fr62au9Y7oYhmYq
ZmFonAH0BSqw4mgJVb0/hmO5fZ3l16Z426VFTldjuwWctCjrQCsksgMWcrl1AOih
59cTfsMI8rbY9rlx+LO+JoAWlIsL1kxztAiRFhUOcTDkMqkKLIlRZ/QKhQIDAQAB
AoGAWxMOTgGzSWFFo+chcJlrBh/oCZtaA8Lq8dNbYUjZeMYD0VHiWphpYi3TYNt4
ul/Rjbyj/XvHnWvAWxQ4Se2kJT/R6y/KJ76DIJfIVEOvQ6ERcjCcFvWU3Ek4RrjH
5LGy/LxOnel00EQGm4qgNqcgJ2WBMCGUVNCHJ52yDlshXUECRQDkHiZKlBIveWj2
O//jSv7JuqvBX2oA/MGViCuzdQjyK2YV+ccWcmIwzOIwkbMdfGTAt7sGIGQLZ52q
iQiVvXNOHvBlUQI9AJ5g0cOHCo2Pc6YMwhKL1aCdEquQR66f+1l4FaOM/PSYQEfR
/qlfuQFi7rP047XhdOqZG3phaQRNKTzU9QJFAN7vWByqeNtMm/eIy5smP7qGZDSn
OsGcQtQQMCVBy2xgXXQ8lwSo5K0sjiFJQvMeDpkI9g4Wua8rpDp1kZ5Fd9pxAh8B
AjwbMRxSqbjSHTMJ617WuFNxRAaUliz4elc5QTjV37r+c7V1n0RN6DVnW4kINJ9z
9sWQEcF5/Yd+SZEu9JECRQCkFQYgrTV2CSohm47M170TdxpkiHije45IUBMIHFya
VNCq7ENF3P2OrqroYLZOkhw3ByxVWPPXxHbRzL38dcWnPHB3QQ==
-----END RSA PRIVATE KEY-----

使用公钥和私钥来加密和解密:

# -*- coding: UTF-8 -*-
import rsa
import base64 public_key_str = """-----BEGIN RSA PUBLIC KEY-----
MIGJAoGBAJ6m+aWR00650XWRNzAcy2ywCS5UAyPC4RVhlAP0BOtjegv5rHFgs/Wg
C+lHUCwQ6/vnS9uebcnlSCjldMQRqGLoCyHdvuN0USWBRsJkCsYXWNEuoiwZ3RUQ
EJuhGBjhy7bAN80SqTIUoPgMSfHCe1ymi3ppuskAOTfOR3KjhvlFAgMBAAE=
-----END RSA PUBLIC KEY-----""" private_key_str = """-----BEGIN RSA PRIVATE KEY-----
MIICYQIBAAKBgQCepvmlkdNOudF1kTcwHMtssAkuVAMjwuEVYZQD9ATrY3oL+axx
YLP1oAvpR1AsEOv750vbnm3J5Ugo5XTEEahi6Ash3b7jdFElgUbCZArGF1jRLqIs
Gd0VEBCboRgY4cu2wDfNEqkyFKD4DEnxwntcpot6abrJADk3zkdyo4b5RQIDAQAB
AoGAHQciEEgxKGtZRrCOL3BlS/qdg2t9s5JZiobzBRIlwEfQMda51XjDFIL3CvSw
V4+1Db8RIxrGrbUU0d7Bsj2r9l31jCcZvf3ohqRklcWZ/OF7ndL1pHq1yOR3jqVY
JcVie7OZmAt6dqT7FqzbapdxoU5tMmILI9hQBhwhC+puXPUCRQCrD6APLQvgioTK
kkh3iaMBgH/sU2aRk50q7kQhS8XIs1G3tJihBxveXKkflllW/Nxr6EDKBDgmvzEr
SVeNOZGdXZ13lwI9AO1uAp+QopQ6nmsYCApCihnVCJ8hcvERokm9Wgcadfr/fW9d
HwDdCB/YKDwNHTObExhyERBeo1TMo0RRgwJEP5PxI3LUpUIWlMvFz1gCk75UzVs6
FgVNNvWTsORewHeVebfPupnPy9eYrDrPPbuBmUGbQvpKfGw3NCVwOvcYnep7akUC
PQCSb1sm1qmvCkhSfMvYqBlMvVtH6fVeQSX6nNI9t1A0sgbG/IP2oFw2Z7bI8r2j
6mzoktF7ayMJVf0MUckCRQCJPNzi+INd9rXghnDIpx49gMML719k8fkLlpwOD2Se
8PKB5W18W0u8ECrHS906JZFESKLqVYWqmM2jgBVTOp7XzdjWfA==
-----END RSA PRIVATE KEY-----""" private_key = rsa.PrivateKey.load_pkcs1(private_key_str)
public_key = rsa.PublicKey.load_pkcs1(public_key_str)
msg = "abc12344" encrypt_msg = base64.encodestring(rsa.encrypt(msg, public_key))
decrypt_msg = rsa.decrypt(base64.decodestring(encrypt_msg), private_key)
print(chr(10)+"原始文本:")
print(msg)
print(chr(10)+"加密后的文本:")
print(encrypt_msg)
print(chr(10)+"解密后的文本:")
print(decrypt_msg)

执行结果:

原始文本:
abc12344 加密后的文本:
cxQ/2bz6uwRsgcGhTzrP07BMu5wUAhmfqHgvXmDkCKgxZ2OOae2d20uGJXxhnhoNzyDCg4tRB8Eb
GlvpOD/uSUT6OD9ov5adPfilHV9t3Ve8R1CFMrAm37jrA8sjmdtQ8MSMgweyns5m2lN3aFoDCVcL
QRJAuKLa3+s3n/iUUeI= 解密后的文本:
abc12344

PS: 某些RSA模块生成的公钥的头为“-----BEGIN PUBLIC KEY-----”, 这种RSA头无法正常导入生成public key,需要标准的“-----BEGIN RSA PUBLIC KEY-----”。

通过RSA加密后的密文通常很难使用,使用base64来进行编码处理,方便在各个系统之间传递。

BASE64是一种编码方式,通常用于把二进制数据编码为可写的字符形式的数据。BASE64是一种可逆的编码方式

##===================================================##

python小白,诸位看官觉得有用就拿去,无用看看妹子也成!

Python2.6下基于rsa的加密解密的更多相关文章

  1. 基于RSA的加密/解密示例C#代码

    using System;using System.Security.Cryptography;using System.Text; class RSACSPSample{ static void M ...

  2. PHP开发接口使用RSA进行加密解密方法

    网络安全问题很重要,尤其是保证数据安全,遇到很多在写接口的程序员直接都是明文数据传输,在我看来这是很不专业的.本人提倡经过接口的数据都要进行加密解密之后进行使用. 这篇文章主要介绍使用PHP开发接口, ...

  3. RSA 的加密 解密

    RSA加密解密类: package me.hao0.trace.order; import java.io.BufferedReader; import java.io.BufferedWriter; ...

  4. CryptoAPI与openssl RSA非对称加密解密(PKCS1 PADDING)交互

    (以下代码中都只做测试用,有些地方没有释放内存...这个自己解决下) 1.RSA非对称的,首先提供一个供测试用的证书和私钥的数据 1)pem格式的证书和私钥(公私钥是对应的)的base64编码 voi ...

  5. RSA算法加密解密

    该工具类中用到了BASE64,需要借助第三方类库:javabase64-1.3.1. jar 注意:RSA加密明文最大长度117字节,解密要求密文最大长度为128字节,所以在加密和解密的过程中需要分块 ...

  6. .NET Core 使用RSA算法 加密/解密/签名/验证签名

    前言 前不久移植了支付宝官方的SDK,以适用ASP.NET Core使用支付宝支付,但是最近有好几位用户反应在Linux下使用会出错,调试发现是RSA加密的错误,下面具体讲一讲. RSA在.NET C ...

  7. javascript版前端页面RSA非对称加密解密

    最近由于项目需要做一个url传参,并在页面显示参数内容的需求,这样就会遇到一个url地址可能会被假冒, 并传递非法内容显示在页面的尴尬情况 比如xxx.shtml?server=xxx是坏人& ...

  8. Spring boot RSA 文件加密解密

    github项目地址 rsa_demo ##测试 加密D:/hello/test.pdf 文件,生成加密后的文件 testNeedDecode.pdf 对testNeedDecode.pdf 文件进行 ...

  9. ios php RSA 非对称加密解密 der 和pem生成

    ios 使用public_key.der加密 php 使用 private_key.pem解密 openssl req -x509 -out public_key.der -outform der - ...

随机推荐

  1. modesim测试语句

    : 'd2; Reg2 <= Reg1; i <= i + 1'b1; join : 'd2; i <= i + 1'b1; join : 'd2; Reg2 <= Reg1; ...

  2. 新版Xcode无法新建iOS空项目解决方案

    --感谢同学分享-- 操作说明: 拷贝Empty Application.xctemplate文件夹至   /Contents/Developer/Platforms/iPhoneOS.platfor ...

  3. ActionScript 3.0 自写类整理笔记(十三)——Random类

    一个简单的随机函数工具类,总共提供了9种静态方法来获取不同的随机值随便写的,如果你还有什么更好的建议,请提出来,谢谢~ index.Random类:代码:public final class Rand ...

  4. vc11(vs2012)下编译php

    需要原料: vs2012.php源码 1.本机的mingw没搞定,参考网上文章尝试vs2012编译,借助vs2012自带的命令行工具: 需要去bison官网下载bison.exe放在“c:/windo ...

  5. shell脚本编译安装LAMP环境

    #filename lamp.sh#version Centos6.7;apache2.4.23;mariadb-5.5.40;php5.5.38#data 2016/09/28#mail 23853 ...

  6. PHP 定界符使用

    在PHP代码中,如果不想一行一行的拼接HTML或者JS的话,那么使用定界符将是最好的帮手! 使用方法: <<<eof .......html/js..... eof; 注意事项:(别 ...

  7. Win7 64位 VS2013环境使用cuda_7.5.18

    首先得吐槽下VS2015出来快一年了CUDA居然还不支持,没办法重装系统刚从2013升到2015,还得再装回一个2013用,只为学习CUDA... 然后安装的时候,如果你选择自定义组件安装,注意不要改 ...

  8. MHA的在线切换后的一些总结(mha方案来自网络)

    mha方案来自:http://www.cnblogs.com/xuanzhi201111/p/4231412.html MHA的在线切换 192.168.2.131 [root bin]$ maste ...

  9. STM32正交编码器驱动电机

    1.编码器原理        什么是正交?如果两个信号相位相差90度,则这两个信号称为正交.由于两个信号相差90度,因此可以根据两个信号哪个先哪个后来判断方向. 这里使用了TI12模式,例如当T1上升 ...

  10. poj1274(匈牙利算法)

    The Perfect Stall Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 22809   Accepted: 101 ...