![]() ![]()
昨天学习了栏栅算法。我想到了有字典的暴力破解。先合并在拆分查字典求组合的方法。模拟美国安全局的超级计算机的穷举。考察了一下this.想法。
加强:任意明文经过有限次变换1.后所得的密文都是可破解的。 变换1:第i个字母移动到k位。i,k∈N 破解方法:带字典的暴力破解 符合说明: %表示之间含有零个到任意多个字符 "null"表示不连续 +表示连接 1.完备性 1)是否存在原子性单词和由原子性单词构成的词而意思有二义性 存在。outbreak 和 %out%"null"break% 2)是否一次搜索的解为最优解或者完全解? 由于第一条的存在显然不是最优解或者完全解 3)是否存在a+b+c与a'+b'+c'的合并值相等? 有可能 2.可读性 1)暴力破解出来是否可以正常识别? 显然不能。 1.1)可否可以对结果再排序? 这个要用到英语语法。宝贝鱼Babel Fish的翻译软件尚且没有搞定在本科阶段还是。。。 如果硬要搞就仿照编译原理挨个定义规则集。 1.2)有折中方案否? 用人来解决 2)是否有二义性? 有。中文:你吃饭没 你没饭吃 显然二义 英文:a found b b found a 显然也有。 笔的算法实现了.要学vfp.暂时没有时间.老陈说暂时不要钻牛角尖把大的东西搞出来.本科阶段考研结束前暂时不去分析. 平台mssql 语言t-sql 备选方案.C语系 哈希表 表结构 danci opened closed code: creat table danci(word nvarchar(50)) creat table opened(a int default 0, b int default 0, ....., z int default 0, exam nvarchar(20) default 0, haven nvarchar(20) default ) creat table closed(jieguo nvarchar(50) default null) 算法: step1:初始化opened表 把字符串选择各个字母频数后输入opened表.激活触发器. step2:判定第一行记录(top 1)aeiouy的数是否为空,空则{判定剩下的20个字母是否空.空输入haven至closed后删除此行,否则直接删除此行} 否则转step3 step3:按aeiouy为关键字搜索字典(zidian表)含有则转到opened表exam (这个是一到多的搜索,while(bof==0 or eof==0 )) step4:用含有的字母减a~z里面的数字.如果出现负则删除此行.否则把exam的值拖到haven里面(haven是更新.在后面加上(+)) 转到step2 说明:程序执行有局部性.还有个第二步时可以检测opened是否为空(exist)空就算法结束或者失败. 这个实现了之后可以解决加强的分析.还有个简单的替代分析.这个要用统计学的资料.用了这个就可以纵横传统密码学界了 ![]() |