字母数字密码破解

#encoding:utf-8
#a--1  b---2   26--z
#给定已有的数字密码,求所有可能的原来的字母
final=[]
def translate(arr,begin,end):
    i=begin
    if begin>end:
        result=''
        for j in arr:
            if j!='#':
                result+=j
        final.append(result)
    else:
        if not(i<end and arr[i+1]=='0'):
            arr[i] = chr(ord(arr[i]) + 48)
            translate(arr,begin+1,end)
            arr[i]=chr(ord(arr[i])-48)
        if i<end:
            num=arr[i]+arr[i+1]
            num=int(num)
            if num<=26 and (not(i+2<=end and arr[i+2]=='0')):
                x,y=arr[i],arr[i+1]
                arr[i]=chr(96+num)
                arr[i+1]='#'
                translate(arr,begin+2,end)
                arr[i],arr[i+1]=x,y

while 1:
    arr=raw_input()
    if arr=='':
        break
    arr=list(arr)
    translate(arr,0,len(arr)-1)
    for n in range(len(final)-1):
        print final[n],
    print final[-1]
    final=[]

123

abc aw lc

posted @ 2017-09-18 21:26  王毅2016  阅读(2264)  评论(0编辑  收藏  举报