python實現(xiàn)字符串加密成純數(shù)字
本文實例為大家分享了python實現(xiàn)字符串加密成純數(shù)字的具體代碼,供大家參考,具體內(nèi)容如下
說明:
該加密算法僅僅是做一個簡單的加密,安全性就不談了,哈哈.
算法流程:
1.字符串以utf8編碼成字節(jié)數(shù)組
2.把每一個字節(jié)轉換成十進制數(shù)字字符串('0'~'255')
3.在每個十進制數(shù)字字符串之前加上一個長度位(長度位固定只占1個字符)
4.進行數(shù)字替換,例如:(0-1,1-9,2-3,3-8,4-7,5-6,6-2,7-4,8-5,9-0)
代碼實現(xiàn):
加密:
#加密
def encrypt(srcStr,password='1938762450'):
#將字符串轉換成字節(jié)數(shù)組
data=bytearray(srcStr.encode('utf-8'))
#把每個字節(jié)轉換成數(shù)字字符串
strList=[str(byte) for byte in data]
#給每個數(shù)字字符串前面加一個長度位
strList=[str(len(s))+s for s in strList]
#進行數(shù)字替換
for index0 in range(len(strList)):
tempStr = ""
for index in range(len(strList[index0])):
tempStr+=password[int(strList[index0][index])]
strList[index0]=tempStr
return "".join(strList)
解密:
#解密
def decrypt(srcStr,password='1938762450'):
#數(shù)字替換還原
tempStr=""
for index in range(len(srcStr)):
tempStr+=str(password.find(srcStr[index]))
#去掉長度位,還原成字典
index=0
strList=[]
while True:
#取長度位
length=int(tempStr[index])
#取數(shù)字字符串
s=tempStr[index+1:index+1+length]
#加入到列表中
strList.append(s)
#增加偏移量
index+=1+length
#退出條件
if index>=len(tempStr):
break
data=bytearray(len(strList))
for i in range(len(data)):
data[i]=int(strList[i])
return data.decode('utf-8')
測試:
if __name__ == '__main__':
ret=encrypt('id:123,time:7200,key:123456789987654321','1938762450')
print('密文:',ret)
ret=decrypt(ret,'1938762450')
print('原文:',ret)
運行結果:

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Python調(diào)用百度AI實現(xiàn)人像分割詳解
本文主要介紹了如何通過Python調(diào)用百度AI從而實現(xiàn)人像的分割與合成,文中的示例代碼對我們的工作或?qū)W習有一定的幫助,需要的朋友可以參考一下2021-12-12
Python經(jīng)驗總結:兩種Type?Error問題
這篇文章主要介紹了Python經(jīng)驗總結:兩種Type?Error問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09
Python利用matplotlib繪制約數(shù)個數(shù)統(tǒng)計圖示例
這篇文章主要介紹了Python利用matplotlib繪制約數(shù)個數(shù)統(tǒng)計圖,結合實例形式詳細分析了Python使用matplotlib進行統(tǒng)計圖繪制的相關操作技巧,需要的朋友可以參考下2019-11-11
Python try-except-else-finally的具體使用
本文主要介紹了Python try-except-else-finally的具體使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08

