#coding:utf-8
import hashlib
def md5(s):
return hashlib.md5(s).hexdigest()
def evalCrossTotal(strMd5):
r = 0
for i in strMd5:
r += int("0x%s" % i, 16)
return r
def encryptString(strString, strPasswd):
strPasswdMd5 = md5(strPasswd)
intMd5 = evalCrossTotal(strPasswdMd5)
r = []
for i in range(len(strString)):
r.append(
ord(strString[i]) +
int("0x%s" % strPasswdMd5[i%32], 16) -
intMd5
)
intMd5 = evalCrossTotal(
md5(strString[:(i+1)])[:16] +
md5(str(intMd5))[:16]
)
return " ".join(map(lambda x: str(x), r))
#以下就是自己写的
def decryptString(nList,strPasswd):
strPasswdMd5 = md5(strPasswd.encode("utf8"))
intMd5 = evalCrossTotal(strPasswdMd5)
r = ""
for i in range(len(nList)):
r+=chr(nList[i] - int("0x%s" % strPasswdMd5[i%32], 16) + intMd5)
intMd5 = evalCrossTotal(md5((r[:(i+1)]).encode("utf8"))[:16] + md5((str(intMd5)).encode("utf8"))[:16])
return r
def foo():
s="-149 -234 -157 -132 -187 -140 -157 -241 -158 -177 -85 -215 -180 -187 -173 -218 -161 -183 -133 -226 -136 -171 -126 -169 -155 -96 -169 -240 -163 -153 -137 -111 -123 -191 -151 -213 -151 -142 -152 -208 -118 -137 -136 -244 -157 -168 -187 -201 -170 -176 -192 -209 -205 -174 -163 -189 -126 -133 -148 -194 -145 -212 -170 -155 -148 -165 -167 -206 -171 -177 -88 -173 -125 -129 -129 -235 -121 -190 -161 -165"
nList=eval('[%s]' %s.replace(' ',','))
strPasswd='' #密码为空
print(decryptString(nList,strPasswd))
if __name__ == '__main__':
foo()
print("ok")
pass
近期评论