python實現字串加密成純數字

2021-08-20 21:26:45 字數 1648 閱讀 7542

該加密演算法僅僅是做乙個簡單的加密,安全性就不談了,哈哈.

1.字串以utf8編碼成位元組陣列

2.把每乙個位元組轉換成十進位制數字字串('0'~'255')

3.在每個十進位制數字字串之前加上乙個長度位(長度位固定只佔1個字元)

4.進行數字替換,例如:(0-1,1-9,2-3,3-8,4-7,5-6,6-2,7-4,8-5,9-0)

加密:

#加密

def encrypt(srcstr,password='1938762450'):

#將字串轉換成位元組陣列

data=bytearray(srcstr.encode('utf-8'))

#把每個位元組轉換成數字字串

strlist=[str(byte) for byte in data]

#給每個數字字串前面加乙個長度位

strlist=[str(len(s))+s for s in strlist]

#進行數字替換

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'):

#數字替換還原

tempstr=""

for index in range(len(srcstr)):

tempstr+=str(password.find(srcstr[index]))

#去掉長度位,還原成字典

index=0

strlist=

while true:

#取長度位

length=int(tempstr[index])

#取數字字串

s=tempstr[index+1:index+1+length]

#加入到列表中

#增加偏移量

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)

執行結果:

Python字串 純乾貨

字串 1.定義字串 內建函式操作 len 切片 print s 0 9 print s.count 天 計數次數 print s1.isalpha 是否字母 print s1.upper lower 大小寫 print s.replace 天 hi 1 字串中的 old 舊字串 替換成 new 新字...

字串加密

輸入一串字元 長度不超過100 和乙個正整數k,將其中的英文本母加密並輸出加密後的字串,非英文本母不變。加密思想 將每個字母c加乙個序數k,即用它後面的第k個字母代替,變換公式 c c k。如果字母為z,則後乙個字母是a,也就是字母字元形成乙個圓。輸入第一行是若干字元,以回車結束。輸入第二行是乙個整...

字串加密

在對銀行賬戶等重要許可權設定密碼的時候,我們常常遇到這樣的煩惱 如果為了好記用生日吧,容易被破解,不安全 如果設定不好記的密碼,又擔心自己也會忘記 如果寫 在紙上,擔心紙張被別人發現或弄丟了.這個程式的任務就是把一串拼音字母轉換為6位數字 密碼 我們可以使用任何好記的拼音串 比如名字,王喜明,就寫 ...