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

溫馨提示×

溫馨提示×

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

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

怎么在Python中實現秘鑰加解密字符串

發布時間:2021-05-13 17:35:34 來源:億速云 閱讀:340 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關怎么在Python中實現秘鑰加解密字符串,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

一、設置一個秘鑰

在這個秘鑰加解密方案中,我們需要設置一個秘鑰,用來對數據進行加密和解密。在Mrdoc中,我們借助Django項目中的SECRET_KEY變量來作為秘鑰。原則就是,盡量復雜且長:

key = 'djq%5cu#-jeq15abg$z9_i#_w=$o88m!*alpbedlbat8cr74sd'

接下來對數據的加密和解密,我們都需要使用到這個秘鑰。

二、對數據進行加密

我們的加密邏輯其實很簡單,核心是一個Python內置方法ord(),這個方法用于返回一個單字節的ASCII碼字符的Unicode碼位。加密邏輯步驟如下:

1、創建一個空字符串變量,作為加密字符的初始值;
2、使用zip()方法同時遍歷數據字符串和秘鑰;
3、使用ord()方法分別獲取遍歷的數據字符和秘鑰字符的Unicode碼位,并將其相加,得到此數據字符的加密字符;
4、將得到的加密字符追加到空字符串變量中;
5、返回最終的空字符串變量;

其代碼如下所示:

# 加密
def enctry(s):
 k = 'djq%5cu#-jeq15abg$z9_i#_w=$o88m!*alpbedlbat8cr74sd'
 encry_str = ""
 for i,j in zip(s,k):
  # i為字符,j為秘鑰字符
  temp = str(ord(i)+ord(j))+'_' # 加密字符 = 字符的Unicode碼 + 秘鑰的Unicode碼
  encry_str = encry_str + temp
 return encry_str

如果我們將字符串”zmister”使用這個加密方法進行加密,最終會得到如下所示的加密字符串:

'222_215_218_152_169_200_231_'

三、對數據進行解密

與加密的邏輯相反,我們需要把Unicode碼位還原為單字節的ASCII碼字符,這需要利用到Python的內置方法chr()。所以數據解密的步驟如下所示:

1、定義一個空的字符串變量,作為解密數據的初始值;
2、使用zip()方法同時遍歷加密后的數據和秘鑰;
3、將加密數據字符減去秘鑰字符的Unicode碼位,得到原始數據的Unicode碼位,然后使用chr()方法將其還原為ASCII單字節字符;
4、將得到的解密字符追加到空字符串變量中;
5、返回解密字符

其代碼如下所示:

# 解密
def dectry(p):
 k = 'djq%5cu#-jeq15abg$z9_i#_w=$o88m!*alpbedlbat8cr74sd'
 dec_str = ""
 for i,j in zip(p.split("_")[:-1],k):
  # i 為加密字符,j為秘鑰字符
  temp = chr(int(i) - ord(j)) # 解密字符 = (加密Unicode碼字符 - 秘鑰字符的Unicode碼)的單字節字符
  dec_str = dec_str+temp
 return dec_str

這樣,我們就能把加密的數據解密出來。我們用一個完整的代碼來測試一下:

# coding:utf-8
# @文件: utils.py
# @創建者:州的先生
# #日期:2019/12/8
# 博客地址:zmister.com

# 加密
def enctry(s):
 k = 'djq%5cu#-jeq15abg$z9_i#_w=$o88m!*alpbedlbat8cr74sd'
 encry_str = ""
 for i,j in zip(s,k):
  # i為字符,j為秘鑰字符
  temp = str(ord(i)+ord(j))+'_' # 加密字符 = 字符的Unicode碼 + 秘鑰的Unicode碼
  encry_str = encry_str + temp
 return encry_str

# 解密
def dectry(p):
 k = 'djq%5cu#-jeq15abg$z9_i#_w=$o88m!*alpbedlbat8cr74sd'
 dec_str = ""
 for i,j in zip(p.split("_")[:-1],k):
  # i 為加密字符,j為秘鑰字符
  temp = chr(int(i) - ord(j)) # 解密字符 = (加密Unicode碼字符 - 秘鑰字符的Unicode碼)的單字節字符
  dec_str = dec_str+temp
 return dec_str

data = "zmister.com"
print("原始數據為:",data)
enc_str = enctry(data)
print("加密數據為:",enc_str)
dec_str = dectry(enc_str)
print("解密數據為:",dec_str)

運行上述代碼,我們會得到如下圖所示的結果:

怎么在Python中實現秘鑰加解密字符串 

四、最后

可以發現,這個方法對于一般性的數據加解密而言,還是比較簡單和便捷的,唯一需要考量的是秘鑰的復雜性和安全性,如果有更好地實現方法,歡迎留言討論:)

ps:Python利用字符串自帶函數實現加密和解密

字符串自帶的簡單加密 

encode = str.maketrans('eilouvy','1234567')#加密方式 
words = 'iloveyou' 
encode_words = words.translate(encode)#按encode加密方式加密 
print(encode_words) #輸出23461745 
dedoed = str.maketrans('1234567','eilouvy')#解密方式 
dedoed_words = encode_words.translate(dedoed)#按decode解密方式解密 
print(dedoed_words)#輸出iloveyou

python主要應用領域有哪些

1、云計算,典型應用OpenStack。2、WEB前端開發,眾多大型網站均為Python開發。3.人工智能應用,基于大數據分析和深度學習而發展出來的人工智能本質上已經無法離開python。4、系統運維工程項目,自動化運維的標配就是python+Django/flask。5、金融理財分析,量化交易,金融分析。6、大數據分析。

上述就是小編為大家分享的怎么在Python中實現秘鑰加解密字符串了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

AI

乳源| 缙云县| 江西省| 广南县| 黎川县| 永宁县| 澄迈县| 洛宁县| 昭平县| 寿宁县| 甘肃省| 二手房| 鸡泽县| 通榆县| 高雄县| 江津市| 三明市| 林周县| 海兴县| 四平市| 甘德县| 灌云县| 高唐县| 庄河市| 英山县| 新竹市| 麻城市| 开原市| 伽师县| 沙洋县| 霍邱县| 顺平县| 东山县| 普格县| 江阴市| 黔江区| 西青区| 闽侯县| 防城港市| 灵璧县| 中江县|