中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

對python實現加密的方式有哪些

發布時間:2022-03-05 09:36:37 來源:億速云 閱讀:198 作者:小新 欄目:web開發

小編給大家分享一下對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實現加密的方式有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

济宁市| 香港| 鹿邑县| 阿合奇县| 郯城县| 视频| 肃宁县| 竹溪县| 渝中区| 西安市| 唐海县| 左权县| 介休市| 双柏县| 芒康县| 仁怀市| 济阳县| 南宫市| 康定县| 鄂托克前旗| 沙田区| 双流县| 临城县| 三门峡市| 南宫市| 日照市| 文昌市| 鲜城| 友谊县| 蒙山县| 冷水江市| 阿勒泰市| 永仁县| 城口县| 宜城市| 昌宁县| 喜德县| 沙坪坝区| 井冈山市| 右玉县| 尼勒克县|