Python实现云影密码
原创: 星盟安全团队 星盟安全
引言:
今天逛了adword平台,发现了一个幂数加密,查了下发现了云影密码,知道了原理以后,看到网上没有这类的编解码脚本,就写了一个,代码水平比较烂,dalao们可以多指点下。
原理:
原理很简单,有了1,2,4,8这四个简单的数字,你可以以加法表示出0-9任何一个数字,例如0=28,7=124,9=18。
这样,再用1-26来表示A-Z,就可以用作密码了。
为了不至于混乱,我个人引入了第五个数字0,来用作间隔,以避免翻译错误,所以还可以称“01248密码”。
实现:
def YY_decode(cipher):
charList = [chr(i) for i in range(ord('A'),ord('Z')+1)]
ret = []
plaintext = [i for i in cipher.split('0')]
for i in plaintext:
tmp = 0
for j in range(len(i)):
tmp += int(i[j])
ret.append(charList[tmp-1])
return ''.join(ret)
def YY_encode(plaintext):
charList = [chr(i) for i in range(ord('A'),ord('Z')+1)]
cipher = [i for i in plaintext]
tmp = [];ret = []
for i in range(len(cipher)):
for j in range(len(charList)):
if charList[j] == cipher[i]:
tmp.append(j+1)
for i in tmp:
res = ''
if i>=8:
res += i/8*'8'
if i%8>=4:
res += i%8/4*'4'
if i%4>=2:
res += i%4/2*'2'
if i%2>=1:
res += i%2/1*'1'
ret.append(res+'0')
return ''.join(ret)[:-1]
# print YY_decode('8842101220480224404014224202480122')
print YY_encode('WELLDONE')
运行效果:
——————————————————
更多资讯欢迎关注星盟安全公众号: