一、Python-RSA

RSA库只支持PKCS#1的密钥格式
需要安装第三方库rsa
pip install rsa

python-rsa官方地址:https://stuvel.eu/python-rsa-doc/

 
RSA非对称加密:
1、公钥进行加密(公开)
rsa.encrypt(message, pub_key)
 
2、私钥进行解密(保密)
rsa.decrypt(crypto, priv_key)
 
例:
import base64
import rsa class RsaDemo:
def __init__(self):
self.pubkey, self.privkey = rsa.newkeys(512) #生成公钥、私钥对象,密钥位数512 def encrypt_str(self,test_str):
"""
加密
:param test_str: 需要进行加密的字符串
:return: 返回加密后的str
"""
new_str = test_str.encode("utf8") #字符串转为utf8字节码
crypt_str = rsa.encrypt(message=new_str, pub_key=self.pubkey) #加密,之后数据类型为byte
b64_str = base64.b64encode(crypt_str) # base64编码,格式为byte
result = b64_str.decode() # 转为字符串
print(type(result),result)
return result def decrypt_str(self,crypt_str:str):
"""
解密
:param crypt_str:
:return:
"""
byte_str = crypt_str.encode() #字符串编码为byte
test_str = base64.b64decode(byte_str) #base64解码
byte_result = rsa.decrypt(crypto=test_str,priv_key=self.privkey) #解密
str_result = byte_result.decode() #解码为字符串
print(type(str_result), str_result) if __name__ == '__main__':
test = RsaDemo()
phone = "13300000001"
crypt_phone = test.encrypt_str(phone)
decrypt_phone = test.decrypt_str(crypt_phone)

  

二、pyhton的Crypto

支持PKCS#1、PKCS#8等密钥格式
1、windows下的安装
pip install pycryptodome

2、使用

import base64
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5 as PKCS1_cipher #公钥
public_key = """-----BEGIN PUBLIC KEY-----
********************************
-----END PUBLIC KEY-----""" #私钥
private_key ="""-----BEGIN RSA PRIVATE KEY-----
********************************
-----END RSA PRIVATE KEY-----""" message = "123456" #加密
pub_key = RSA.importKey(public_key)
cipher = PKCS1_cipher.new(pub_key)
rsa_text = base64.b64encode(cipher.encrypt(message.encode("utf-8)"))) #加密并转为b64编码
text = rsa_text.decode("utf8") #解码为字符串
print("加密后的内容:",text) # 解密
pri_Key = RSA.importKey(private_key)
cipher = PKCS1_cipher.new(pri_Key)
back_text = cipher.decrypt(base64.b64decode(text.encode("utf8")), 0)
print("解密后的内容:",back_text.decode("utf-8"))

  

三、MD5

import hashlib
no = "0001"
no = no.encode("utf8") #转为byte #md5_no = hashlib.md5(no) #编码为md5对象
#md5_no = md5_no.hexdigest() #转为16进制字符串 result = hashlib.md5(no).hexdigest()
print(result)

  

备注:关于PKCS#8和PKCS#1证书格式之间,可进行转换
 
 

Python中RSA的PKCS#1、PKCS#8,MD5加密的更多相关文章

  1. iOS,一行代码进行RSA、DES 、AES、MD5加密、解密

    本文为投稿文章,作者:Flying_Einstein(简书) 加密的Demo,欢迎下载 JAVA端的加密解密,读者可以看我同事的这篇文章:http://www.jianshu.com/p/98569e ...

  2. 使用RSA加密在Python中逆向shell

    i春秋翻译小组-Neo(李皓伟) 使用RSA加密在Python中逆向shell 这是一个关于使用RSA加密编程逆向shell的python教程. 我想提一下,这篇文章更多的是关于理解shell中涉及的 ...

  3. RSA私钥和公钥文件格式 (pkcs#1, pkcs#8, pkcs#12, pem)

    RSA私钥和公钥文件格式 (pkcs#1, pkcs#8, pkcs#12, pem) 2018年03月07日 11:57:22 阅读数:674 Format Name Description PKC ...

  4. OpenSSL和Python实现RSA Key公钥加密私钥解密

    基于非对称算法的RSA Key主要有两个用途,数字签名和验证(私钥签名,公钥验证),以及非对称加解密(公钥加密,私钥解密).本文提供一个基于OpenSSL和Python进行非对称加解密的例子. 1. ...

  5. OPENSSL中RSA私钥文件(PEM格式)解析【一】

    http://blog.sina.com.cn/s/blog_4fcd1ea30100yh4s.html 在PKCS#1 RSA算法标准中定义RSA私钥语法为: RSAPrivateKey ::= S ...

  6. OpenSSL 中 RSA 加密解密实现源代码分析

    1.RSA 公钥和私钥的组成.以及加密和解密的公式: 2.模指数运算: 先做指数运算,再做模运算.如 5^3 mod 7 = 125 mod 7 = 6 3.RSA加密算法流程: 选择一对不同的.而且 ...

  7. Python的RSA加密和PBE加密

    最近在写接口的时候,遇到了需要使用RSA加密和PBE加密的情况,对方公司提供的DEMO都是JAVA的,我需要用python来实现. 在网上搜了一下,python的RSA加密这块写的还是比较多的,但是P ...

  8. Python3 实现 JS 中 RSA 加密的 NoPadding 模式

    前因后果之哗啦啦废话连篇: 这几天本人在 Python 做某网站登陆的时候,发现其登陆时用户名和密码被加密了 F12 仔细看了一下,发现是调用了一个 js 的 rsa 加密库,页面 dom 中有 rs ...

  9. python的rsa公钥解密方法

    示例: # -*- coding: UTF- -*- import M2Crypto import base64 #私钥加密,公钥解密 def pri_encrypt(msg, file_name): ...

  10. linux命令(28):Linux下SCP无需输入密码传输文件,python 中scp文件

    python 中scp文件:(如果下面的发送免密码已经完成的话,就直接能用下面这个) os.system('scp "%s" "%s:%s"' % (" ...

随机推荐

  1. Winform窗体中打开PDF文件的三种方式

    来源:https://www.jb51.net/article/251451.htm

  2. Java基础——IO模型详解

  3. oralce sql 缓存查询及删除

    --缓存查询语句 V$SQLAREA 视图记录sql 执行情况(加载次数/用时/Id....) 常用字段 ADDRESS:SQL语句在SGA中的地址. 这两列被用于鉴别SQL语句,有时,两条不同的语句 ...

  4. 12-K8S之调度器、预选策略和优选函数

    目录 调度器.预选策略和优选函数 1.nodeSelector nodeName调度: 2.节点亲和性调度(pod亲和于node节点) 3.pod亲和度调度(pod亲和于pod) 4.pod反亲和性度 ...

  5. 音视频技术入门课- 05 使用FFmpeg与OBS进行直播推流

    做直播推流的前提是要有直播服务器接收直播流,所以需要我们自己建设一个流媒体服务器. 流媒体服务器SRS SRS是一个简单高效的实时视频服务器,支持RTMP/WebRTC/HLS/HTTP-FLV/SR ...

  6. 脚本执行sudo命令时: 免手动确认和免输入密码

    1.sudo 命令有时候需要手动输入yes来确认执行 或者 软件在安装包下载完毕后还需要你输入y进行确认安装 .那如果是用脚本执行sudo 命令就可以用-y 参数来确认执行 sudo yum inst ...

  7. SQL Server性能优化工具Profiler

    SQL Server Profiler是什么 SQL Server Profiler是一个界面,用于创建和管理跟踪并分析和重播跟踪结果. 这些事件保存在一个跟踪文件中,稍后试图诊断问题时,可以对该文件 ...

  8. 解决QtCreator运行程序报plugin xcb的错误

    解决方法:将对应项目的运行环境的LD_LIBRARY_PATH中的qt的库路径移到最前面,如下图: LD_LIBRARY_PATH可以指定查找共享库的路径,将qt的共享库移到前面,可以优先使用qt的库

  9. Demo of canvas, canvas optimization and svg

    It used the canvas to draw the curves in the old project, and the client felt that it was vague, so ...

  10. MVC页面加载速度优化小记

     前言: 最近做一个地图展示页面,业务初期没什么问题,运行一阵后报错: Error during serialization or deserialization using the JSON Jav ...