python實現文字加解密常用方法

一含懊、base64實現加解密

import base64
string = '哈哈哈哈哈'

# base64編碼字符串
def base64_encode(message):
    encode_str = base64.b64encode(message.encode('utf-8'))
    return str(encode_str, 'utf-8')

def base64_decode(message):
    decode_str = base64.b64decode(message.encode('utf-8'))
    return str(decode_str, 'utf-8')

print("base64加密: " + base64_encode(string))
a = base64_encode(string)
print("base64解密: " + base64_decode(a))

運行結果:


base64.png

二身冬、MD5實現加密

因為MD5是不可逆算法,不可解密岔乔,更安全酥筝。

import hashlib
string = '哈哈哈哈哈'
def MD5_encrypt(message):  # MD5加密
    m = hashlib.md5()
    m.update(message.encode("utf8"))
    return m.hexdigest()

print(string)
print("MD5加密: " + MD5_encrypt(string))

運行結果:
MD5加密.png

三、使用AES加密

1.解決Crypto引入失敗問題

使用pip install Crypto仍出現問題雏门,如圖所示


image.png

解決辦法:使用pip安裝pycrypto的目錄名為crypto, 使用pip show pycrypto找到pycrypto的安裝目錄


image.png

進入到上圖文件目錄中
文件.png

將文件名crypto修改為Crypto即可

2.代碼

# coding: utf8
from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex


class prpcrypt():
    def __init__(self, key, iv):
        self.key = key
        self.iv = iv
        self.mode = AES.MODE_CBC
        # 加密函數嘿歌,如果text不是16的倍數【加密文本text必須為16的倍數!】茁影,那就補足為16的倍數

    def encrypt(self, text):
        cryptor = AES.new(self.key, self.mode, self.iv)
        # 這里密鑰key 長度必須為16(AES-128)宙帝、24(AES-192)、或32(AES-256)Bytes 長度.目前AES-128足夠用
        length = 16
        count = len(text)
        if (count % length != 0):
            add = length - (count % length)
        else:
            add = 0
            text = text + ('\0' * add)
        self.ciphertext = cryptor.encrypt(text)
        # 因為AES加密時候得到的字符串不一定是ascii字符集的募闲,輸出到終端或者保存時候可能存在問題
        # 所以這里統(tǒng)一把加密后的字符串轉化為16進制字符串 ,當然也可以轉換為base64加密的內容步脓,可以使用b2a_base64(self.ciphertext)
        return b2a_hex(self.ciphertext)

    # 解密后,去掉補足的空格用strip() 去掉
    def decrypt(self, text):
        cryptor = AES.new(self.key, self.mode, self.iv)
        plain_text = cryptor.decrypt(a2b_hex(text))
        return plain_text.rstrip(b'aaaaaaaaaaaaaaaa')


if __name__ == '__main__':
    print(type(b'aaaaaaaaaaaaaaaa'))
    pc = prpcrypt('keyskeyskeyskeys', b'aaaaaaaaaaaaaaaa')  # 初始化密鑰
    e = pc.encrypt("0123456789ABCDEF")
    d = pc.decrypt(e)
    print(e, d)
    print("++++++++++++")
    e = pc.encrypt("1111111111111111")
    d = pc.decrypt(e)
    print(e, d)

運行結果:


AES.png
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市靴患,隨后出現的幾起案子仍侥,更是在濱河造成了極大的恐慌,老刑警劉巖鸳君,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件农渊,死亡現場離奇詭異,居然都是意外死亡或颊,警方通過查閱死者的電腦和手機砸紊,發(fā)現死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來囱挑,“玉大人醉顽,你說我怎么就攤上這事∑教簦” “怎么了徽鼎?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長弹惦。 經常有香客問我,道長悄但,這世上最難降的妖魔是什么棠隐? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮檐嚣,結果婚禮上助泽,老公的妹妹穿的比我還像新娘。我一直安慰自己嚎京,他們只是感情好嗡贺,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鞍帝,像睡著了一般诫睬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上帕涌,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天摄凡,我揣著相機與錄音,去河邊找鬼蚓曼。 笑死亲澡,一個胖子當著我的面吹牛,可吹牛的內容都是我干的纫版。 我是一名探鬼主播床绪,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了癞己?” 一聲冷哼從身側響起膀斋,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎末秃,沒想到半個月后概页,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡练慕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年惰匙,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铃将。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡项鬼,死狀恐怖,靈堂內的尸體忽然破棺而出劲阎,到底是詐尸還是另有隱情绘盟,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布悯仙,位于F島的核電站龄毡,受9級特大地震影響,放射性物質發(fā)生泄漏锡垄。R本人自食惡果不足惜沦零,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望货岭。 院中可真熱鬧路操,春花似錦、人聲如沸千贯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽搔谴。三九已至魁袜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間敦第,已是汗流浹背慌核。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留申尼,地道東北人垮卓。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像师幕,于是被迫代替她去往敵國和親粟按。 傳聞我的和親對象是個殘疾皇子诬滩,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內容

  • 本文地址:http://www.reibang.com/p/4ba20afacce2 1. 前言 我們所說的加密...
    王南北丶閱讀 51,588評論 10 52
  • 這里先簡單介紹單向散列函數、消息摘要和哈希碰撞的的概念 單向散列函數: 將任意長度的信息轉換為較短的固定長度的值灭将,...
    坤_7a1e閱讀 3,491評論 0 0
  • 之前的項目中接觸過一些加密的方法疼鸟,也沒有太仔細的進行記錄和研究。最近在寫SDK時庙曙,加密模塊的占比相當之大空镜;借此時機...
    過半_e764閱讀 573評論 0 0
  • 近期公司需要針對分享流程進行優(yōu)化,其中一點就是前端H5檢測是否安裝應用捌朴,來進行不同的判斷(下載或直接跳轉到app中...
    陌白_閱讀 15,243評論 7 8
  • 早起5.30 晚上11點上床睡覺吴攒,但入睡在11點半左右,早上5.30鬧鈴響起時砂蔽,睡眠時間在6小時左右洼怔,特別的嗜睡,...
    Darling圓閱讀 173評論 0 0