iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >怎么使用python中的pycrypto算法加密
  • 596
分享到

怎么使用python中的pycrypto算法加密

2023-06-30 11:06:39 596人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

今天小编给大家分享一下怎么使用python中的pycrypto算法加密的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、安装

今天小编给大家分享一下怎么使用python中的pycrypto算法加密的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

一、安装

  • pycryto能实现大致3种类型的数据加密(单向加密、对称加密 和非对称加密),产生随机数,生成密钥对,数字签名

  • 单向加密:Crypto.Hash,其中中包含MD5、SHA1、SHA256等

  • 对称加密:Crypto.Cipher如常见的DES等

  • 非对称加密:Crypto.Cipher如常见的AES加密等

  • 随机数操作:Crypto.Random也可以使用Python内置的random模块和secrets模块产生

  • 数字签名与验签:可能需要使用到 Crypto.PublicKey,Crypto.Hash,Crypto.Signature

pip install pycryto

二、AES 加密解密

  • 可以使用 AES.new(key, Mode, IV) 进行加密设置

  • key:长度必须是16、24、或32位

  • VI:长度只能是16位

  • 解密时必须要知道加密时使用的key和IV,再通过decrypt()方法进行解密

from Crypto.Cipher import AES# 加密aes = AES.new('this is a key 11', AES.MODE_CBC, 'this is a iv 222')string = 'autofelix is God'# encrypt()方法要求被加密的字符串必须也是16、24或32位的长度;所以一般要对被加密串进行处理result = aes.encrypt(string)# 解密aes.decrypt(result)

三、SHA加密

from Crypto.Hash import SHA256hash = SHA256.new()hash.update('Hello, World!')# 使用digest()方法加密digest = hash.digest()# 使用hexdigest()方法加密,该方法加密后是16进制的hexdigest = hash.hexdigest()print(digest, hexdigest)

四、RSA算法生成密钥对

  • RSA是一种公钥密码算法

  • RSA的密文是对代码明文的数字的 E 次方求mod N 的结果。也就是将明文和自己做E次乘法,然后再将其结果除以 N 求余数,余数就是密文。RSA是一个简洁的加密算法。E 和 N 的组合就是公钥

  • 对于RSA的解密,即密文的数字的 D 次方求mod N 即可,即密文和自己做 D 次乘法,再对结果除以 N 求余数即可得到明文。D 和 N 的组合就是私钥

from Crypto import Randomfrom Crypto.PublicKey import RSA# 获取一个伪随机数生成器random_generator = Random.new().read# 获取一个rsa算法对应的密钥对生成器实例rsa = RSA.generate(1024, random_generator)# 生成私钥并保存private_pem = rsa.exporTKEy()with open('rsa.key', 'w') as f:f.write(private_pem)# 生成公钥并保存public_pem = rsa.publickey().exportKey()with open('rsa.pub', 'w') as f:f.write(public_pem)# 私钥 rsa.key 结果大概如下# -----BEGIN RSA PRIVATE KEY-----# MIICXQIBAAKBgQDR4Wq9l44lw/thTPyFmSi2hII92EPh90yGXQNL5e7zJPD16j6Q# # tr+tIPNSQaVrnmNwrtqyEC2x4Meyp3tdCWPYUF11r2GgDgxKfUByetNG4XqJeUKk# kJ6D6C706mTf/2zsm8KFoNYCYPX1GhvpiTOikHcNlHLCnOD7jbMAovJg/QIDAQAB# AoGBaiz8V6+0NxC3bg4WoSs9j1PL/5F7zV3lucoogSZi9vjuP89x40Vi/a9XCxye# bHi2lSYEz3P92jQ7QuqIBx6gSCi3p2HLjD5LyQeSSMbPe8KSlf52dBUaPthbBceA# IjsBDrE8MKGpulTQKAJ7K3zQUOP2ZZGCKxq2jcQgS6iTENIBAkEA5r7emvwuL0Ob# Maav4o1Ovb5c6OL7bSm1tuLPSKl05WuNYfE6LkqiwOOn5lPvsqhwyI1dJeywVeQz# E+PvcTUR7QJBAOjZ8PxnP5T14fuhbfko4d24Ev+iiTBdq3pMXWvobEFL1ljV6aYE# 2JAiMjO/Fzd1WgZhWPa3P+diyTs9mART6VECQQC0LeEXdsn9oDYEbFu1dZBB++8C# 75NTJ5m8iJlB7QjZyMUq8Ln0wdUa9+n4ohxvDraa9EADSDJdr4bvBjLH3J/1AkBr# 9QfO7kvDU5DXqoujVnoJ4xsj3IbAnt0vEZLKwfLW/0M84si2SU7i3IfsB+/KraT0# ilPF50ZAkEN+LNt7PjBRAkAHBBPME7IbFqxi5Cc/6R12DOMiJbOLDTS12b1J1cwG# p8WMIERsvwWdJw+4NdqjbJcjzeGrXhDBi//JU902TAwy# -----END RSA PRIVATE KEY-----# 公钥 rsa.pub 结果大概如下# -----BEGIN PUBLIC KEY-----# # MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDR4Wq9l44lw/thTPyFmSi2hII9# 2EPh90yGXQNL5e7zJPD16j6Qtr+tIPNSQaVrnmNwrtqyEC2x4Meyp3tdCWPYUF11# r2GgDgxKfUByetNG4XqJeUKkkJ6D6C706mTf/2zsm8KFoNYCYPX1GhvpiTOikHcN# lHLCnOD7jbMAovJg/QIDAQAB# -----END PUBLIC KEY-----

五、使用密钥对加密解密

  • 通常通信的时候,发送者使用接受者的公钥加密,接受者使用接受者私钥解密

import cgi, base64from Crypto.PublicKey import RSAfrom Crypto.Signature import PKCS1_v1_5from Crypto.Hash import SHA256import hashlib# 要加密的字符串message = 'autofelix is god'# 使用公钥对内容进行 rsa 加密with open('rsa.pub') as f:key = f.read()rsakey = RSA.importKey(key)cipher = Cipher_pkcs1_v1_5.new(rsakey)cipher_text = base64.b64encode(cipher.encrypt(message))print(cipher_text)# 使用私钥对内容进行 rsa 解密with open('rsa.key') as f:key = f.read()rsakey = RSA.importKey(key)cipher = Cipher_pkcs1_v1_5.new(rsakey)text = cipher.decrypt(base64.b64decode(encrypt_text), random_generator)print(text)

六、加签和验签

import datetime, randomimport requestsimport hashlibimport JSON, base64from Crypto.PublicKey import RSAfrom Crypto.Signature import PKCS1_v1_5from Crypto.Hash import SHA256from Crypto.Cipher import AES# 加签def sign(signflag,keypath,baseRequest):# Http请求bodyprint(baseRequest)# 加签标志if not signflag:return baseRequestelse:# 取请求体中的业务数据businessdata = json.dumps(baseRequest["data"])# 读取私钥(.key格式,可使用openssl或java.keytools产生)with open(keypath,'r') as rsaKeyFile:rsaKey = rsaKeyFile.read().replace("\n",'')print(rsaKey)rsaKeyBytes = base64.b64decode(rsaKey)print(rsaKeyBytes)# SHA256摘要,RSA加密priKey = RSA.importKey(rsaKeyBytes)signer = PKCS1_v1_5.new(priKey)hash_obj = SHA256.new(business_data.encode('utf-8'))signature = base64.b64encode(signer.sign(hash_obj))print(signature)# 把签名加进请求体并返回baseRequest['sign'] = signature.decode()print(baseRequest)return baseRequest# 验签def validata(signflag,cerpath,res):if not signflag:return reselse:# 取业务数据和签名data = res['data']sign = res['sign']# 此处cer已转换成pem格式,使用openssl工具# openssl x509 -infORM der -pubkey -noout -in xxxxx.cer>xxxxx.pemcert = open(cerpath).read().replace("-----BEGIN PUBLIC KEY-----\n","").replace("-----END PUBLIC KEY-----\n","").replace("\n","")print(cert)# 验签逻辑同加签pubBytes = base64.b64decode(cert)pubKey = RSA.importKey(pubBytes)signer = SHA256.new(json.dumps(data).encode("utf-8"))verifier = PKCS1_v1_5.new(pubKey)return verifier.verify(signer,base64.b64decode(sign))

以上就是“怎么使用python中的pycrypto算法加密”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网Python频道。

--结束END--

本文标题: 怎么使用python中的pycrypto算法加密

本文链接: https://www.lsjlt.com/news/328458.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么使用python中的pycrypto算法加密
    今天小编给大家分享一下怎么使用python中的pycrypto算法加密的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、安装...
    99+
    2023-06-30
  • python 中的pycrypto 算法加密
    目录一、安装二、AES 加密解密三、SHA加密四、RSA算法生成密钥对五、使用密钥对加密解密六、加签和验签一、安装 pycryto能实现大致3种类型的数据加密(单向加密、对...
    99+
    2024-04-02
  • python加密解密算法怎么使用
    Python提供了多种加密解密算法的库,比如`hashlib`、`hmac`、`base64`、`cryptography`等。下面...
    99+
    2023-09-17
    python
  • Go中使用加密算法的方法
    目录哈希算法加密模式对称加密⾮对称加密椭圆曲线加密算法ECC数字签名字符编码/解码巨人的肩膀哈希算法  md5 128bit,16字节 如:md5 (“he...
    99+
    2024-04-02
  • Python中hash加密方法怎么使用
    这篇文章主要介绍“Python中hash加密方法怎么使用”,在日常操作中,相信很多人在Python中hash加密方法怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中hash加密方法怎么使用...
    99+
    2023-06-28
  • python3中的rsa加密算法怎么用
    今天小编给大家分享一下python3中的rsa加密算法怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。前言:rsa加密,...
    99+
    2023-06-30
  • php混淆加密算法怎么使用
    PHP混淆加密算法可用于保护源代码的安全性,防止代码被解析和修改。以下是一个使用PHP混淆加密算法的示例:1. 在开始之前,你需要安...
    99+
    2023-09-14
    php
  • ssl使用什么加密算法
    ssl使用的加密算法是对称加密算法,如:DES:数据加密标准,速度较快,适用于加密大量数据的场合。RSA:它是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的。AES:高级加密标准,是下一代的加密算法标准,速度快,安全级别高...
    99+
    2024-04-02
  • C#中如何使用加密算法
    C#中如何使用加密算法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。C#加密算法MD5的全称是message-digest algorithm 5(信息-摘要算法),在90...
    99+
    2023-06-17
  • SSL加密过程中使用了哪些加密算法
    SSL加密过程中使用了以下加密算法: 对称加密算法:SSL会使用对称加密算法来加密通信中的数据,如DES、3DES、AES等。 ...
    99+
    2024-04-17
    SSL证书
  • Python中有哪些加密算法
    这期内容当中小编将会给大家带来有关Python中有哪些加密算法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。MD5加密全称:MD5消息摘要算法(英语:MD5 Message-Digest  Al...
    99+
    2023-06-16
  • 怎么在PHP中使用RSA非对称加密算法
    本篇文章给大家分享的是有关怎么在PHP中使用RSA非对称加密算法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。php有什么用php是一个嵌套的缩写名称,是英文超级文本预处理语言...
    99+
    2023-06-14
  • Vue中使用crypto-jsAES对称加密算法实现加密解密
    目录 下载crypto-js加密解密数据AES算法的ECB模式加密-设置秘钥AES算法的CBC模式加密-设置秘钥和偏移量参考: 在数字加密算法中,通过可划分为对称...
    99+
    2024-04-02
  • python对称加密算法怎么实现
    Python中可以使用cryptography库来实现对称加密算法。以下是一个使用AES加密算法的示例:pythonfrom cry...
    99+
    2023-10-18
    python
  • 国密算法:利用python进行sm4算法的加解密,对称密钥
    本篇利用python中的gmssl库进行sm4算法的加解密演示。 国密算法sm4特点: 密钥长度:16bytes(128bits)分组长度和密钥长度均为128bits;是对称加密算法;分为ecb模式和...
    99+
    2023-09-02
    python 国密算法 sm4算法 对称密钥 gmssl
  • Python中常见的加密解密算法有哪些
    1.url encode加密简介:当url地址含有中文,或者参数有中文的时候,这个算是很正常了,但是把这样的url作为参数传递的时候(最常见的callback),需要把一些中文甚至'/'做一下编码转换。# -*- codin...
    99+
    2023-05-16
    Python
  • 怎么使用PHP实现C语言中的异或加密算法
    本篇内容介绍了“怎么使用PHP实现C语言中的异或加密算法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、异或加密算法简介异或加密算法是一种...
    99+
    2023-07-05
  • 加密算法---BCryptPasswordEncoder的使用及原理
    BCryptPasswordEncoder的使用及原理 一 介绍二 案例使用2.1 添加依赖2.2 PasswordConfig2.3 application.yml2.4 单元测试2.5 结果 三 优秀博客 一 介绍...
    99+
    2023-08-16
    java
  • PHP+MySQL应用中如何使用XOR运算加密算法
    PHP+MySQL应用中如何使用XOR运算加密算法,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。XOR算法原理从加密的主要方法看,换位法过于简单,特别是对于数据...
    99+
    2023-06-17
  • 怎么用对称加密算法实现C#数据加密
    这篇文章主要讲解了“怎么用对称加密算法实现C#数据加密”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用对称加密算法实现C#数据加密”吧!以下是关于对称加密算法的C#数据加密实现代码,大家...
    99+
    2023-06-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作