一、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. react hooks组件父组件调用子组件方法

    函数组件父组件调用子组件方法需要使用 useImperativeHandle 和 forwardRef 两个方法 1.子组件 2.父组件 注意:一定要使用ref来接从子组件传过来的实例值,用其他的在函 ...

  2. 如何下载zoom上别人录制的视频?

    参考知乎作者"Oops chocoholic"的方法 https://www.zhihu.com/question/432030457/answer/1681898684 临时关闭 ...

  3. JAVA格式化数字字符串,如手机号,银行卡号的格式化

    格式化手机号码为3 3 5 String mobile = "13123456789"; String regex = "(\\d{3})(\\d{3})(\\d{5}) ...

  4. Jenkins拉取GitHub上代码

    1.github 生成 Personal Access Token 2.github 设置 GitHub webhooks (具体需要持续集成的项目),新建或者设置现有项目的 webhooks 选项, ...

  5. CSS入门学习笔记

    CSS入门学习笔记一.CSS简介1.什么是CSS?2.为什么使用CSS?3.CSS的作用二.CSS语法1.CSS基础语法2.CSS注释语法3.CSS应用方法三.CSS选择器1.元素选择器2.类选择器3 ...

  6. navicat图形工具和pymysql模块的使用

    一 Navicat 在生产环境中操作MySQL数据库还是推荐使用命令行工具mysql,但在我们自己开发测试时,可以使用可视化工具Navicat,以图形界面的形式操作MySQL数据库 官网下载:http ...

  7. 博客神器Gridea

    博客神器Gridea Gridea 温故而知新 Gridea 最早叫 Hve Notes ,开发者为了更易读和好记,重新命名为 Gridea,支持 Windows 和 Mac 平台,他的基础界面非常的 ...

  8. J V M大概理解

    jvm的大致流程:他把一个Class文件 通过类加载机制 装载到jvm里面,然后放到不同的运行时数据区(Runtime Data Areas),通过编译器来编译. 第一部分,我们可以关注class文件 ...

  9. 3阶(次)贝塞尔曲线的JavaScript(JS)实现

    php中文网数学符号的显示太差了,推荐看这里 贝塞尔曲线简介:贝塞尔曲线,是贝塞尔老爷子在使用电子计算机设计汽车零件的时候 进行曲面设计而采用的一种参数化的样条曲线. 一般参数方程: B(t) = \ ...

  10. C语言学习--指针函数与函数指针

    #include<stdio.h> #include<string.h> //指针函数: 是一个函数, 但是这个函数的返回值类型是一个指针 //函数指针: 是一个指针, 这个指 ...