該加密演算法僅僅是做乙個簡單的加密,安全性就不談了,哈哈.
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位數字 密碼 我們可以使用任何好記的拼音串 比如名字,王喜明,就寫 ...