培根密码加解密

来源:互联网 发布:手机淘宝在哪看退货率 编辑:程序博客网 时间:2024/04/29 05:51

0x00 介绍

培根密码实际上就是一种替换密码,根据所给表一一对应转换即可加密解密
它的特殊之处在于:可以通过不明显的特征来隐藏密码信息,比如大小写、正斜体等,只要两个不同的属性,密码即可隐藏

0x01 代码实现

脚本很简单,就是建立对应关系,对密文,或者明文进行相应的替换即可
需要注意的是输入的都应该是小写字母,在脚本里也有说明
python脚本如下:

#!/usr/bin/python# -*- coding: utf-8 -*-import realphabet = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']first_cipher = ["aaaaa","aaaab","aaaba","aaabb","aabaa","aabab","aabba","aabbb","abaaa","abaab","ababa","ababb","abbaa","abbab","abbba","abbbb","baaaa","baaab","baaba","baabb","babaa","babab","babba","babbb","bbaaa","bbaab"]second_cipher = ["aaaaa","aaaab","aaaba","aaabb","aabaa","aabab","aabba","aabbb","abaaa","abaaa","abaab","ababa","ababb","abbaa","abbab","abbba","abbbb","baaaa","baaab","baaba","baabb","baabb","babaa","babab","babba","babbb"]def encode():    string = raw_input("please input string to encode:\n")    e_string1 = ""    e_string2 = ""    for index in string:        for i in range(0,26):            if index == alphabet[i]:                e_string1 += first_cipher[i]                e_string2 += second_cipher[i]                break    print "first encode method result is:\n"+e_string1    print "second encode method result is:\n"+e_string2    returndef decode():    e_string = raw_input("please input string to decode:\n")    e_array = re.findall(".{5}",e_string)    d_string1 = ""    d_string2 = ""    for index in e_array:        for i in range(0,26):            if index == first_cipher[i]:                d_string1 += alphabet[i]            if index == second_cipher[i]:                d_string2 += alphabet[i]    print "first decode method result is:\n"+d_string1    print "second decode method result is:\n"+d_string2    returnif __name__ == '__main__':    while True:        print "\t*******Bacon Encode_Decode System*******"        print "input should be lowercase,cipher just include a b"        print "1.encode\n2.decode\n3.exit"        s_number = raw_input("please input number to choose\n")        if s_number == "1":            encode()            raw_input()        elif s_number == "2":            decode()            raw_input()        elif s_number == "3":            break        else:            continue

0x02 不足

因为windows下编码经常乱码,去做编码的处理比较烦,脚本的提示就换成了英语,谁想改就自己改一下吧

0 0
原创粉丝点击