培根密码解密笔记

培根密码,培根所用的密码是一种本质上用二进制数设计的,没有用通常的0和1来表示,而是采用a和b

一、培根密码加密方式

    第一种方式:    A aaaaa B aaaab C aaaba D aaabb E aabaa F aabab G aabba H aabbb I abaaa J abaab    K ababa L ababb M abbaa N abbab O abbba P abbbb Q baaaa R baaab S baaba T baabb    U babaa V babab W babba X babbb Y bbaaa Z bbaab

第二种方式    a AAAAA   g AABBA    n ABBAA   t BAABA    b AAAAB   h AABBB    o ABBAB   u-v BAABB    c AAABA   i-j ABAAA  p ABBBA   w BABAA    d AAABB   k ABAAB    q ABBBB   x BABAB    e AABAA   l ABABA    r BAAAA   y BABBA    f AABAB   m ABABB    s BAAAB   z BABBB

二、举例

例1、 baabaaabbbabaaabbaaaaaaaaabbabaaaabaaaaaabaaabaabaaaabaabbbaabbbaababb

baaba aabbb abaaa bbaaa aaaaa abbab aaaab aaaaa abaaa baaba  aaaba abbba abbba ababb

s           h         i           y         a         n         b         a        i           s          c         o          o        l

例2、明文是LOVE,用“随意选取句子和文”加密,得到密文就是“SuLyi XuanQ uJuZi HEwEN”(这里用大写字母代表a,小写字母代表b)

SuLyi  XuanQ uJuZi HEwEN

ababbabbbabababaabaa

这里,加密者使用两种不同字体,准备好一篇包含相同ab字数的假信息后,即两种字体分别代表a型和b型。然后假信息中的每个字母按字体来决定其代表“a”还是“b”。

例3、明文:now is a good t.........密码术 密码学 密码论坛 密码术论坛, `, Q" J/ K2 F9 S

n       o        w        i        s       a        g       o        o        d        t
                  abbaa abbab babaa abaaa baaab aaaaa aabba abbab abbab aaabb baaba
       
密文:BOWED ASTER PINED JOKED THEIR BLACK HASTE ARRAY INSET CHEST SLING

加密规则:(1)a-m -> a ,也就是说 a ——m 的所有字母都能替换成 a。

n-z  -> b ,也就是说 n ——z 的所有字母都能替换成 b。

(2)a-m <- a ,也就是说 a 可以替换 a——m 中的任何一个字母。

n-z  <- a ,也就是说 b 可以替换 n——z  中的任何一个字母。

Ps:密文中的单词都是根据加密规则随便拼凑出来的,为了使加密更隐蔽,一般拼凑出来的单词可连成通顺的一句话

三、附加解密Python脚本如下:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import re

alphabet = [‘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
    return

def 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
    return

if __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

注:本笔记参考文献百度百科xuqi7博客曜希JFSH

----------------------------------------------------------------分割线---------------------------------------------------------

ps:萌新一枚,本文纯为学习笔记,以防某日犯傻忘记--。如有不妥处,望大佬们赐教~

时间: 2024-08-01 09:34:22

培根密码解密笔记的相关文章

Linux-weblogic 10.3.6控制台密码解密过程

weblogic控制台密码丢失影响系统更新版本 在保证中间件正常运行的情况下,将加密后的密码解密从而登录控制台 前提是有中间件所在服务器的权限,普通用户即可 需要的文件: SerializedSystemIni.dat   这是weblogic的加密密钥,仅有一个,若找不到可使用find命令查找 我的路径为:/home/anker/domains/anker_domain/security/SerializedSystemIni.dat setWLSEnv.sh   配置环境变量用 我的路径:/

培根密码脚本

Upper = { "A":"aaaaa","a":"AAAAA", "B":"aaaab","b":"AAAAB", "C":"aaaba","c":"AAABA", "D":"aaabb","d":&quo

一个jsp站的用户密码解密

在登录页面源码看到这样一句 md5.decrypt(StrPwd) 我意识到这代表数据库里存的加密用户密码是可以解密的,名称叫md5只是个幌子. 文件开头import了com.b.s.l.u.MD5,可我在WEB-INF目录的class子目录没找到这样的class文件,后来意识到是jar中的,于是下载了lib目录下的一个jar文件. jar xvf that.jar照理就能解压了,可是这个服务器的编译环境很是不一般,我的电脑安装的java无法工作,用解压工具也解不出,最后在服务器上运行jar x

discuz 密码解密

百无聊赖中想看看discuz密码的加密方式,发现密码和邮箱这个东西最好有好几个,不然被脱库一个,你的网络上的帐号都是危险,然后分等级去用. 比如:支付宝.银行卡.网银之类的密码和邮箱最好单独使用一个,分为最高等级. 第二级是一些重要但是不涉及资产的,如:12306之类的,单独一个,此为第二等级 第三级是一些其他帐号密码,就算丢了对自己损失不大,既没有隐私也没有财产损失 第四类是一些垃圾网站非得注册,丢了重新注册无所谓的. 以下是解密步骤 mysql> select username,passwo

某资金盘程序的密码解密脚本

<?php header("Content-type: text/html; charset=gbk"); ?> <form action="post.php" method="post"> <input type="text" name="content" value=""> <input type="submit" val

playfair密码解密加密

#include #include #include #include int A[1000][1000];//转化矩阵 int a[1000][1000];//单位矩阵[A E] int B[1000][1000];//矩阵的逆矩阵A^(-1) int ming[1000][1000];//明文矩阵 int mi[1000][1000];//密文矩阵 int n;//矩阵的阶数 void input()//输入数据 { int i, j; for( i = 1; i <= n; i++ ) f

[信安Presentation]一种基于GPU并行计算的MD5密码解密方法

[Code] Section 0:introduction of MD5, and some of its application  [Ref] STEP1:从plaintext末尾开始填充1000000.....,直到(数据长度)%512=448[单位:bit STEP2:继续填充64bit,这64bit里存储的是填充前plaintext的长度 STEP3:将填充好的信息拆分成整数个512bit的blocks,一个一个block处理 STEP4:FOR EACH 512b_BLOCKS: Ro

【SEO】2.了解搜索引擎(SEO实战密码读书笔记)

一个合格的SEO必须了解搜索引擎基本工作原理.很多看似令人迷惑的SEO原理及技巧,其实从搜索引擎原理出发,都是自然而然的事情. 2.1 搜索引擎与目录 搜索引擎和目录两者各有优劣. 雅虎目录.搜狐目录等曾经也是用户在网上寻找信息的主流方式,给用户的感觉与真正的搜索引擎也相差不多.这也就是目录有时候被误称为“搜索引擎的一种”的原因.但随着Google等真正意义上的搜索引擎发展起来,目录的使用迅速减少,现在已经很少有人使用网站目录寻找信息了.现在的网站目录对SEO的最大意义是建设外部链接,像雅虎.开

2018-03-28设置及修改mysql用户密码学习笔记

退出mysql方法 quit或者exit 设置及修改mysqlroot用户密码 安装mysql后,默认管理员root密码为空,这很不安全,需要设置一个密码,在安装mysql单实例后,有个初始优化的一些安全措施: 为root设置了密码 删除无用的mysql库内的用户账号. 删除默认存在的test数据库 除了以上方法,针对mysql数据库的用户处理,我们还有更严格的做法如下: 增加system并提升为超级管理员,即和root等价的用户,只是名字不同. mysql>grant all privileg