• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

古典密码解密(频率计算法)、英文字符统计及频率计算、按频率显示英文字符、相关matl ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

已知英文字符:

WB WI KJB MK RMIT BMIQ BJ RASHMWK RMVP YJERYRKB MKD WBI IWOKWXWVMKVR MKD IJYR YNIB URYMWK NKRASHMWKRD, BJ OWER M VJYSHRBR RASHMKMBWJK, JKR CJNHD PMER BJ LR FNMHWXWRD MKD WKISWURD BJ INVP MK RABRKB BPMB PR VJNHD URMVP BPR IBMBR JX RKHWOPBRKRD YWKD VMSMLHR JX URVJOKWGWKO IJNKDHRII IJNKD MKD IPMSRHRII IPMSR W DJ KJB DRRY YTIRHX BPR XWKMH MNBPJUWBT LNB YT RASRUWRKVR CWBP QMBM PMI HRXB KJ DJNLB BPMB BPR XJHHJCWKO WI BPR SUJSRU MSSHWVMBWJK MKD WKBRUSURBMBWJK W JXXRU YT BPRJUWRI WK BPR PJSR BPMB BPR RIIRKVR JX JQWKMCMK QMUMBR CWHH URYMWK WKBMVB

网上查找,理论上英文字符的概率分布(注意这个不是上文的概率分布!!!!!!!!!):

破译结果:

    'it is not an easy task to explain each movement and its significance and some must remain unexplained to give a complete explanation one would have to be qualified and inspired to such an extent that he could reach the state of enlightened mind capable of recogniqing soundless sound and shapeless shape i do not deem myself the final authority but my experience with kata has left no doubt that the following is the proper application and interpretation i offer my theories in the hope that the essence of okinawan karate will remain intact'

源代码:

本代码计算已知英文字符的概率分布,并进行概率对比,再猜单词,最终实现密文的**。

clc;
clear;
str=fileread('message_code.txt'); %读入全文             
% str=(''); %读入全文
[c,~,freq] = find(accumarray(uint16(str(:)),1));
fprintf('%c %d\n',[c freq]')
fprintf('\n');
rank(:,1) = c;
rank(:,2) = freq;
ans=sortrows(rank,-2); %只根据第二列进行排序 -2表示降序
ans(:,3) = ans(:,2)/sum(ans(:,2));
fprintf('%c  %d  %f\n',[ans(:,1) ans(:,2) ans(:,3)]');
% plot(ans(:,1),ans(:,3));
figure;
bar(ans(:,3));
name = {' ','R','B','M','K','W', 'J', 'I', 'P', 'H', ...
    'D' 'S' 'U' 'V' 'Y' 'N' 'X' 'O' 'A' 'C' 'T' 'L' 'Q' 'E' 'F' 'G'};
set(gca,'xtick',1:1:26);
set(gca,'xticklabel',name);
for i = 1:size(str,2)
    if strcmp(str(i),'R')
        str(i) = 'e';
    end
    if strcmp(str(i),'B')
        str(i) = 't';
    end
    if strcmp(str(i),'M')
        str(i) = 'a';
    end
    if strcmp(str(i),'K')
        str(i) = 'n';
    end
    if strcmp(str(i),'W')
        str(i) = 'i';
    end    
    if strcmp(str(i),'J')
        str(i) = 'o';
    end
    if strcmp(str(i),'I')
        str(i) = 's';
    end
    if strcmp(str(i),'P')
        str(i) = 'h';
    end
    if strcmp(str(i),'H')
        str(i) = 'l';
    end
    if strcmp(str(i),'D')
        str(i) = 'd';
    end
    if strcmp(str(i),'S')
        str(i) = 'p';
    end
    if strcmp(str(i),'U')
        str(i) = 'r';
    end
    if strcmp(str(i),'V')
        str(i) = 'c';
    end
    if strcmp(str(i),'Y')
        str(i) = 'm';
    end
    if strcmp(str(i),'N')
        str(i) = 'u';
    end
    if strcmp(str(i),'X')
        str(i) = 'f';
    end
    if strcmp(str(i),'O')
        str(i) = 'g';
    end
    if strcmp(str(i),'A')
        str(i) = 'x';
    end
    if strcmp(str(i),'C')
        str(i) = 'w';
    end
    if strcmp(str(i),'T')
        str(i) = 'y';
    end
    if strcmp(str(i),'L')
        str(i) = 'b';
    end
    if strcmp(str(i),'Q')
        str(i) = 'k';
    end
    if strcmp(str(i),'E')
        str(i) = 'v';
    end
    if strcmp(str(i),'F')
        str(i) = 'q';
    end
    if strcmp(str(i),'G')
        str(i) = 'q';
    end
end


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
用Delphi开发Linux程序的环境配置发布时间:2022-07-18
下一篇:
Delphi中动态生成的button调用onclick如何传递参数发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap