iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >对python实现加密的方式有哪些
  • 712
分享到

对python实现加密的方式有哪些

2024-04-02 19:04:59 712人浏览 安东尼

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

摘要

小编给大家分享一下对python实现加密的方式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 基础知识扫盲 对称加密

小编给大家分享一下对python实现加密的方式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

基础知识扫盲

对称加密

对称密钥加密 , 又叫私钥加密。即信息发送的方和接受方用一个密钥去加密和揭秘数据。 最大的优势是 加解密速度快,适合对大量数据进行加密, 对称加密的缺点是密钥的管理和分配, 换句话说就是 如何把密钥发送到需要解密你的消息的人手里的问题。在发送密钥的过程中, 密钥有很大的风险被黑客拦截。 现实中的做法是将对称加密的密钥进行非对称加密然后传给需要他的人。

非对称加密

非对称加密系统, 又称公钥密钥加密。 非对称加密为数据的加密与解密提供了一种非常安全的方式。她使用了一对密钥, 私钥和公钥。 私钥只能有一方安全保管, 不能外泄, 而公钥可以发给任何请求她的人。非对称加密使用这对密钥中的一个进行加密, 而解密却需要一个另外一个密钥。 比如你去银行 你向银行请求公钥,银行将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人–银行才能对你的消息解密。 与对称加密的不同之处是, 银行不需要将私钥通过网络发送出去。因此安全性大大提高。 目前最常用的非对称加密算法是RSA算法。公钥机制灵活,但加密和解密速度却比对称密钥加密慢得多。 公钥机制灵活, 但是加密和解密速度却要比堆成加密慢很多。

1) Alice需要在银行的网站做一笔交易,她的浏览器首先生成了一个随机数作为对称密钥。

(2) Alice的浏览器向银行的网站请求公钥。

(3) 银行将公钥发送给Alice。

(4) Alice的浏览器使用银行的公钥将自己的对称密钥加密。

(5) Alice的浏览器将加密后的对称密钥发送给银行。

(6) 银行使用私钥解密得到Alice浏览器的对称密钥。

(7) Alice与银行可以使用对称密钥来对沟通的内容进行加密与解密了。

总结

(1) 对称加密加密与解密使用的是同样的密钥,所以速度快,但由于需要将密钥在网络传输,所以安全性不高。

(2) 非对称加密使用了一对密钥,公钥与私钥,所以安全性高,但加密与解密速度慢。

(3) 解决的办法是将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。

Python中加密的注意点

我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes。

所以当我们在Python中进行加密操作的时候,要确保我们操作的是Bytes,否则就会报错。

字符串和Bytes互相转换可以使用encode()和decode()方法。

Base64

Base64是一种用64个字符来表示任意二进制数据的方法。

Base64编码可以称为密码学的基石。可以将任意的二进制数据进行Base64编码。所有的数据都能被编码为并只用65个字符就能表示的文本文件。( 65字符:A——Z a——z 0——9 + / = )编码后的数据——=编码前数据的4/3,会大1/3左右。

原理

说明

转换的时候,将三个byte的数据,先后放入一个24bit的缓冲区中,先来的byte占高位。

数据不足3byte的话,于缓冲区中剩下的bit用0补足。然后,每次取出6个bit,按照其值选择查表选择对应的字符作为编码后的输出。

不断进行,直到全部输入数据转换完成。

如果最后剩下两个输入数据,在编码结果后加1个“=”。

如果最后剩下一个输入数据,编码结果后加2个“=”。

如果没有剩下任何数据,就什么都不要加,这样才可以保证资料还原的正确性。

Base64加密与解密

注意:

1.用于base64编码的,要么是ASCII包含的字符,要么是二进制数据

2.base64 是对称加密

MD5

message-digest alGorithm 5(信息-摘要算法)。经常说的“MD5加密”,就是信息摘要算法。

md5,其实就是一种算法。可以将一个字符串,或文件,或压缩包,执行md5后,就可以生成一个固定长度为128bit的串。这个串,基本上是唯一的。

说明

压缩性:任意长度的数据,算出的MD5值长度都是固定的。

容易计算:从原数据计算出MD5值很容易。

抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

不可逆性:每个人都有不同的指纹,看到这个人,可以得出他的指纹等信息,并且唯一对应,但你只看一个指纹,是不可能看到或读到这个人的长相或身份等信息。

MD5加密与解密

由于MD5模块在python3中被移除,在python3中使用hashlib模块进行md5操作

输出结果

MD5加密前为 :这是一个测试 MD5加密后为 :cfca700b9e09cf664f3ae80733274d9f

md5的长度,默认为128bit,也就是128个0和1的二进制串。这样表达是很不友好的。所以将二进制转成了16进制,每4个bit表示一个16进制,所以128/4 = 32 换成16进制表示后,为32位了。

为什么网上还有md5是16位的呢?

其实16位的长度,是从32位md5值来的。是将32位md5去掉前八位,去掉后八位得到的。

DES

介绍PyCrypto

PyCrypto是 Python 中密码学方面最有名的第三方软件包,提供了许多加密算法的使用。可惜的是,它的开发工作于2012年就已停止。

幸运的是,有一个该项目的分支PyCrytodome 取代了 PyCrypto 。

安装与导入

安装之前需要先安装Microsoft Visual c++ 2015。

linux上安装,可以使用以下 pip 命令:

pip install pycryptodome

导入:

import Crypto

windows 系统上安装则稍有不同:

pip install pycryptodomex

导入:

import Cryptodome

DES介绍

DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准。

DES是一个分组加密算法,典型的DES以64位为分组对数据加密,加密和解密用的是同一个算法。

DES算法的入口参数有三个:Key、Data、Mode。其中Key为7个字节共56位,是DES算法的工作密钥;Data为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。

密钥长64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位,使得每个密钥都有奇数个1),分组后的明文组和56位的密钥按位替代或交换的方法形成密文组。

加密原理

DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 个循环,使用异或,置换,代换,移位操作四种基本运算。

算法步骤

1)初始置换

其功能是把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长3 2位,其置换规则为将输入的第58位换到第一位,第50位换到第2位……依此类推,最后一位是原来的第7位。L0、R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位,例:设置换前的输入值为D1D2D3……D64,则经过初始置换后的结果为:L0=D58D50……D8;R0=D57D49……D7。

其置换规则见下表:

58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4,

62,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8,

57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,3,

61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7,

2)逆置换

经过16次迭代运算后,得到L16、R16,将此作为输入,进行逆置换,逆置换正好是初始置换的逆运算,由此即得到密文输出。

此算法是对称加密算法体系中的代表,在计算机网络系统中广泛使用.

DES加密与解密

3DES

3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。

由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解。3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。

3DES(即Triple DES)是DES向AES过渡的加密算法(1999年,NIST将3-DES指定为过渡的加密标准),加密算法,其具体实现如下:设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,M代表明文,C代表密文,这样:

3DES加密过程为:C=Ek3(Dk2(Ek1(M)))

3DES解密过程为:M=Dk1(EK2(Dk3©))

AES

高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。

AES在软件及硬件上都能快速地加解密,相对来说较易于实作,且只需要很少的存储器。作为一个新的加密标准,目前正被部署应用到更广大的范围。

特点

抵抗所有已知的攻击。

在多个平台上速度快,编码紧凑。

设计简单。

AES加密与解码

AES为分组密码,分组密码也就是把明文分成一组一组的,每组长度相等,每次加密一组数据,直到加密完整个明文。在AES标准规范中,分组长度只能是128位,也就是说,每个分组为16个字节(每个字节8位)。密钥的长度可以使用128位、192位或256位。密钥的长度不同,推荐加密轮数也不同。

一般常用的是128位

RSA

RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。

该算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥,而两个大素数组合成私钥。公钥是可发布的供任何人使用,私钥则为自己所有,供解密之用。

非对称加密

典型的如RSA等,常见方法,使用openssl ,keytools等工具生成一对公私钥对,使用被公钥加密的数据可以使用私钥来解密,反之亦然(被私钥加密的数据也可以被公钥解密) 。

在实际使用中私钥一般保存在发布者手中,是私有的不对外公开的,只将公钥对外公布,就能实现只有私钥的持有者才能将数据解密的方法。 这种加密方式安全系数很高,因为它不用将解密的密钥进行传递,从而没有密钥在传递过程中被截获的风险,而破解密文几乎又是不可能的。

但是算法的效率低,所以常用于很重要数据的加密,常和对称配合使用,使用非对称加密的密钥去加密对称加密的密钥。

RSA加密与解密

首先我们需要安装一个rsa模块:

pip install rsa

而且,因为RSA加密算法的特性,RSA的公钥私钥都是10进制的,但公钥的值常常保存为16进制的格式,所以需要将其用int()方法转换为10进制格式。

以上是“对python实现加密的方式有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网Python频道!

--结束END--

本文标题: 对python实现加密的方式有哪些

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

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

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

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

下载Word文档
猜你喜欢
  • 对python实现加密的方式有哪些
    小编给大家分享一下对python实现加密的方式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 基础知识扫盲 对称加密 ...
    99+
    2024-04-02
  • Python中有哪些常见的加密方式
    Python中有哪些常见的加密方式,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前言我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的B...
    99+
    2023-06-02
  • android加密方式有哪些
    Android系统提供了多种加密方式用于保护数据和通信安全,包括以下几种:1. 数据加密(Data Encryption):Android系统可以对存储在设备上的数据进行加密,使用的是Advanced Encryption Standa...
    99+
    2023-08-11
    android
  • php密码加密方式有哪些
    php中常见的密码加密方式有以下几种RSA加密算法RSA算法是一种使用不同的加密密钥与解密密钥,是由已知加密密钥推导出解密密钥在计算上是不可行的密码体制,其原理是根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可...
    99+
    2024-04-02
  • Python常见的数据加密方式有哪些
    这篇文章主要介绍了Python常见的数据加密方式有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python常见的数据加密方式有哪些文章都会有所收获,下面我们一起来看看吧。前言:常见的加密算法基本分为这几类...
    99+
    2023-06-30
  • 常用的加密方式有哪些
    一、密钥散列 采用MD5或者SHA1等散列算法,对明文进行加密。严格来说,MD5不算一种加密算法,而是一种摘要算法。无论多长的输入,MD5都会输出一个128位(16字节)的散列值。而SHA1也是流行的消息摘要算法,它可以生成一个被称为消息摘...
    99+
    2023-09-25
    网络 java 服务器
  • MySQL中实现加密解密的方法有哪些
    这篇文章给大家介绍MySQL中实现加密解密的方法有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。双向加密双向加密有三种方法:ENCODE/DECODE传入两个值,一个是要加密的记录,一个是加密和解密的key.加密之...
    99+
    2023-06-14
  • Go实现MD5加密的方法有哪些
    这篇文章主要介绍“Go实现MD5加密的方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Go实现MD5加密的方法有哪些”文章能帮助大家解决问题。第一种方法:md5.New() 和 Writep...
    99+
    2023-07-05
  • PHP常用的加密解密方式有哪些
    PHP常用的加密解密方式有以下几种:1. md5:通过对数据进行不可逆的哈希运算,生成固定长度的摘要。2. sha1:与md5类似,...
    99+
    2023-08-30
    PHP
  • 实现Linux数据加密的方法有哪些
    这篇文章主要介绍“实现Linux数据加密的方法有哪些”,在日常操作中,相信很多人在实现Linux数据加密的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”实现Linux数据加密的方法有哪些”的疑惑有所...
    99+
    2023-06-12
  • java数据加密方式有哪些
    java中有以下常用的三种数据加密方式非对称加密非对称加密算法需要两个密钥来进行加密和解密,这两个密钥是公开密钥和私有密钥,公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,...
    99+
    2024-04-02
  • oracle数据加密方式有哪些
    oracle中的数据加密方式有以下两种DES加密算法DES加密算法是一种分组密码,以64位为分组对数据加密,它的密钥长度是56位,加密解密用同一算法。DES加密算法是对密钥进行保密,而公开算法,包括加密和解密算法。RC4加密算法RC4是一种...
    99+
    2024-04-02
  • ssl加密方式有哪些漏洞
    使用SSL加密过程中,可能会存在以下漏洞:1、弱安全程序漏洞使用弱的加密算法或者不正确的安全配置,可能会造成信息泄漏。2、Race ...
    99+
    2023-03-06
    ssl加密方式 ssl
  • 常用的数据加密方式有哪些
    常用的数据加密方式有以下几种:1. 对称加密:使用相同的密钥对数据进行加密和解密,例如DES、3DES、AES等。2. 非对称加密:...
    99+
    2023-06-07
    数据加密方式
  • 数据传输的加密方式有哪些
    常见的数据传输加密方式有以下两种MD5加密MD5是计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护,MD5是以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分...
    99+
    2024-04-02
  • 数据交互的加密方式有哪些
    数据交互的加密方式有以下几种AES算法AES算法是基于排列和置换运算实现的,排列是对数据重新进行安排,置换是将一个数据单元替换为另一个,AES是一个迭代的、对称密钥分组的密码,是使用相同的密钥进行加密和解密数据的。RSA算法RSA算法是一种...
    99+
    2024-04-02
  • Python协程的实现方式有哪些
    什么是协程在 Python 中,协程(Coroutine)是一种轻量级的并发编程方式,可以通过协作式多任务来实现高效的并发执行。使用 yield 关键字挂起函数的执行,以及保存当前执行状态,是协程的特殊之处。因此,协程可视为一种特殊的生成器...
    99+
    2023-05-20
    Python
  • sqlite数据库加密方式有哪些
    对sqlite数据库进行加密的方法首先,在sqlite中新建一个数据库;FileStream fs = File.Create("c:\\test.db");数据库新建好后,执行以下命令即可对数据库进行加密;SQLite...
    99+
    2024-04-02
  • 前端数据加密方式有哪些
    前端中有以下几种常见的数据加密方式base64加密使用方法:<script src="js/base64.js"></script>  var b = ne...
    99+
    2024-04-02
  • VBA工程加密PJ方式有哪些
    本篇文章给大家分享的是有关VBA工程加密PJ方式有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。两种方式破解VBA加密代码第一种:Sub VBAPasswor&#...
    99+
    2023-06-21
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作