package cn.longxuzi;

import org.junit.Test;

public class Chi_SquareUtils {

private static final ICUtils icUtils = new ICUtils();

/**

* @author信息111李继华(LiJiHua)

* @param String

*            [][]ciphertext

* @return null

* @Date 2013-11-21 PM 19:23

* @copyright李继华所有

*/

@Test

public void chi_square() {

String[][] ciphertext = icUtils.devideCipherText();// 获取密文划分以后的每一小组的密文数组

String[] freList = { "A=8.167", "B=1.492", "C=2.782", "D=4.253",

"E=12.702", "F=2.228", "G=2.015", "H=6.049", "I=6.996",

"J=0.153", "K=0.772", "L=4.025", "M=2.406", "N=6.749",

"O=7.507", "P=1.929", "Q=0.095", "R=5.987", "S=6.327",

"T=9.056", "U=2.758", "V=0.978", "W=2.360", "X=0.150",

"Y=1.974", "Z=0.074" };// 频率分布表构成的字符串数组

int count = 0;// 计数器(计算每一个英文字母出现的次数)

double index = 0;// 临时存储每一组密文的X^2得到的值

double[] x = new double[ciphertext.length];// 创建存储每一组密文X值的double型数组容器

int[][] sum1 = new int[ciphertext.length][freList.length];// 创建用来存储每一组每个英文字母出现的次数的整形数组容器

double[][] sum2 = new double[ciphertext.length][freList.length];// 创建存储每一组每个密文字母的(C-E)/E值

for (int i = 0; i < ciphertext.length; i++) {// 第一层循环遍历根据密钥长度分成的每一小组密文

for (int j = 0; j < freList.length; j++) {// 第二层循环遍历频率分布表中每个字母在每一小组密文中是否出现以及它们的频率

String flag = freList[j].substring(0, 1);// 临时存储取到的第J个英文字母

double E = Double.parseDouble(freList[j].substring(2,

freList[j].length()));// 临时存储取到的第J个字母对应的频率值

for (int k = 0; k < ciphertext[0].length; k++) {// 第三层循环遍历每一个密文小组中每一个密文字母

if (flag.equals(ciphertext[i][k])) {// 根据字母表顺序依次判断每一个英文字母是否在密文小组中出现了

count++;// 如果出现,开始计数每一个英文字母在小组密文字母表中总共出现的次数

}

}

sum1[i][j] = count;// 赋值给用来存储字母出现次数的数组容器

count = 0;// 计数器清零

double dis = (double) (sum1[i][j] - E);

sum2[i][j] = (dis * dis) / E;

}

}

for (int i = 0; i < ciphertext.length; i++) {

for (int j = 0; j < freList.length; j++) {

index += sum2[i][j];

}

x[i] = index;

index = 0;

System.out.println("第" + (i + 1) + "小组的X值为" + Math.sqrt(x[i]));

}

}

// 以下是计算每一个密文小组X值的测试代码

public static void main(String[] args) {

while (true) {

Chi_SquareUtils ch = new Chi_SquareUtils();

ch.chi_square();

}

}

}

java维吉尼亚密码_维吉尼亚密码java完整版相关推荐

  1. 帮助孩子学会感恩_页数204_出版日期2015.03_完整版PDF电子书下载

    帮助孩子学会感恩_页数204_出版日期2015.03_完整版PDF电子书下载 带索引书签目录高清版_13813212 下载链接http://pan.baidu.com/s/1geEmUeZ [作 者] ...

  2. 哈希密码_哈希生日和密码

    哈希密码 什么是哈希函数? (What is a Hash function?) It's an algorithm that maps an input of arbitrary length to ...

  3. 获取令牌密码_如何真正存储用户密码和api令牌(即密码)

    获取令牌密码 A cliché in posts detailing password storage schemes is to finish by telling the syadmins and ...

  4. java内存 phd文件抓取_您可以从IBM PHD Java堆转储中提取字符串的值吗?

    我有一个来自IBM jvm的PHD格式堆转储,我希望检查一些字符串的值.使用Sun JVM的二进制hprof转储,这是可能的,但是我无法从IBM转储中恢复此信息. 我试过了: >具有IBM DT ...

  5. arcgis超级工具密码_浏览器的自动保存密码是如何将我们的密码泄露的?

    开局我们先来回答一个小问题,你注册了多少的账号密码?设置了多少不同的密码?又有多少密码是相同的?讲道理,这很难回答.不知道你们平常会不会把一些账号密码让浏览器自动保存,下次直接点击就可以登入了,非常方 ...

  6. svn php改客户端密码_记录VisualSVNServer配置在线密码修改功能

    VisualSVN Server使用的是64位版 查看对应的apache版本号是 2.2.32. 这个版本需要使用php5.5以下的,且需要使用64位的php. 下载php 5.4 的64位版本. 配 ...

  7. openwrt首次登录密码_什么是路由器登录密码 路由器登录密码介绍【详解】

    "无线路由器的无线wifi(网络)密码是登录密码吗?"最近看到网上有不少网友在咨询这个问题,或者是把无线wifi密码当作登录密码遇到无法登录的问题,在这里小编觉得有必要跟大家讲解一 ...

  8. win10删除开机密码_讲解win10忘记开机密码

    U盘启动盘来修改密码,这项操作是比较繁锁,因为制作U盘启动盘需要比较常的时间,而且还需要一台可以正常使用的电脑,这个操作都是对技能比较高的.当然了如果您对电脑感兴趣也可以试一试这个方法的.这篇文章主要 ...

  9. 阿里云 mysql 修改密码_阿里云mysql修改密码

    MYSQL的密码我们并不经常修改,但有时我们会忘记密码需要修改,还会将密码更改为自己更容易记住的!下面介绍两种更改mysql密码的方法 方法一: 此方法主要是记得旧密码然后更改为新的密码 1)先输入m ...

  10. java蓝桥杯加法变乘法_蓝桥杯-加法变乘法-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

最新文章

  1. JSP装状态管理 session cookie
  2. ubuntu下载搜狗输入法并设置开机自启动
  3. C语言DFS算法的实现(附完整源码)
  4. java并查集计算机网络连通,poj2236 Wireless Network(并查集)
  5. matlab保存格式可以用cad打开文件,怎么将TXT文件导入CAD中生成图形
  6. Linux系统中输入输出管理
  7. CentOS 6.5+Syslog-ng+LogZilla搭建中央日志服务器
  8. C#实现超长位整数运算
  9. java final 变量 大小写_java – 为什么“final static int”可以用作开关的大小写常量但不是“final static”...
  10. Matlab图像处理系列3———空间域锐化滤波器
  11. 修改Linux里的hosts文件
  12. 求高手请进,帮我分析这种情况是什么原因
  13. 分销商城业务逻辑设计_功能思维导图_OctShop
  14. 记一次Exception in thread main java.lang.NullPointerException异常
  15. unity制作手机h5小游戏,发布webgl后我的修改
  16. 迅捷PDF转Word转换器
  17. 2016虾神封箱:虾神的空间统计书单
  18. 数字信号处理3个作业-----作业3自相关与Burg求解AR模型系数以估计其功率谱
  19. 对话阿里云张建锋:云计算正在内卷吗?丨钛度专访
  20. java实现连接linux,JAVA实现远道SSH连接linux并执行命令

热门文章

  1. csdn添加自定义栏目,公众号二维码等
  2. [附源码]Python计算机毕业设计Django大学生心理测评系统
  3. 修改placeholder样式
  4. Java对MySQL数据库进行增删改查的操作(一)
  5. 对口升学计算机网络网络试题,中职对口升学计算机网络检测试题一
  6. 运维人员的军刀——ROS
  7. matlab 贝叶斯网络
  8. Python进程池Pool:让每个进程井然有序
  9. %@ Application Codebehind=Global.asax.cs Inherits=XXX.MvcApplication Language=C# %
  10. 简单的多线程编程_同步与互斥问题