本文目錄一覽:
python怎麼將48位位元組的密鑰加密 再解密
你可以考慮使用RSA演算法來做加密和解密,目前Pycrypto可以支持這個演算法。你只需要用公鑰發給對法加密,只有自己的私鑰才能解密。而這個私鑰不需要進行傳輸。
密碼學基礎之對稱加密(一)
就不給定義了,我簡單解釋下,就是我的信息不想讓別人知道,使用 秘鑰(key) 對我的信息進行 加密(encrypt) ,變成鬼符一樣的 秘文(ciphertext) 。別人就算看到了,也無法識別,只有有了秘鑰,把秘文 解密(decrypt) 後才能看懂信息,秘鑰呢?一般人我不告訴他。我的秘鑰是私密信息,所以也叫 私鑰(private key) ,加密和解密用的秘鑰是相同的,所以叫 「對稱加密」 ,也叫 「私鑰加密」 。
對於明文plaintext,和對稱秘鑰key
加密過程 E(plaintext, key) = ciphertext
解密過程 D(ciphertext, key) = plaintext
對稱加密的分為 分組密碼(block cipher) 和 流密碼(stream cipher) 兩種類型。本文只介紹分組密碼。
分組密碼是每次只能處理特定長度的一塊(block)數據的一類加解密演算法。AES就是一種分組密碼演算法。AES加密演算法每次可以加密的塊長度是128位(bit)。
ECB模式
使用AES加密演算法ECB模式,每次能加密128位數據,即16個位元組。如果要加密48個位元組內容,我們需要把數據分為3組,每組16個位元組,分別為P1、P2、P3。P1、P2、P3加密後形成的秘文分別為C1、C2、C3,我們把C1、C2、C3依次拼接起來就成為最終的加密結果。
CBC模式
《對稱加密之對稱加密二》正在寫作,會包含分組密碼的更多模式,流密碼及AES的更多知識。
DES加密:舊的加密演算法,NIST規定僅能用於遺留系統和TDEA。(參考文獻[CNS] 3.2章)
TDEA(Triple DEA)加密:很多資料也叫3DES(Triple DES)。(參考文獻[SP800-67])
Python 可以使用 pycrypto 模塊進行AES加解密。安裝 pycrypto 可使用命令 pip install pycrypto 安裝。
下面AES演示第一版,先看下,緊接著就會升級到第二版本。
運行一下,能正常加解密。但是,如果你把要加密的文本,從 aesAlgorithmDemo 改為 hello ,就會運行報錯:
這是因為,AES的分組長度是128位,即16個位元組。有些AES實現,要加密的消息長度不是16個位元組的倍數需要填充。
填充的方法一般是按照PKCS#7填充標準。
如果要數據的長度不是分組的整數倍,需要填充數據到分組的倍數,如果數據的長度是分組的倍數,需要填充分組長度的數據,填充的每個位元組值為填充的長度。PKCS#7支持的分組長度為1到255個位元組。
舉一些例子:
AES的分組長度為16個位元組,不管秘鑰是128位、192位還是256位。如果要加密的數據長度是5個位元組,你需要填充11個位元組,填充的內容位填充的長度0x0b。填充後類似下面表示
如果數據長度是30個位元組,需要填充2個位元組,每個位元組的內容為0x02,如果數據成都恰好為16的倍數,需要填充16個位元組,每個位元組的內容為0x10。
弄明白填充的概念後,我們重寫加解密函數如下:
這樣填充後會不會可其它系統不兼容?不會。一般的AES程序都是支持PKCS#7填充的。
密碼學基礎之RSA與不對稱秘鑰
密碼學基礎系列
[CNS] 《密碼編碼學與網路安全》(第六版)
[SP800-67] NIST Special Publication 800-67 Revision 1, Recommendation for Triple Data Encryption Algorithm (TDEA) Block Cipher, January 2012.
[SSH] OpenSSH CBC模式信息泄露漏洞
[NIST SP 800-57 Part 1 Rev. 4] Recommendation for Key Management, Part 1: General
哪位大俠有python版本的3DES(雙倍長32位密鑰)的加解密演算法源碼幫忙提供一
#if !defined(_CRYPT3DES_H) #define _CRYPT3DES_H #if !defined(ED_FLAG) #define ED_FLAG #define encrypt 0 #define decrypt 1 #endif #ifndef _WINDOWS_ #include “windows.h” #endif
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/239251.html