Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static void estimateKeyLength(String cipherText, int suggestLength){
- double[] ic;
- for(int i=1;i<=suggestLength;i++){
- ic = new double[i];
- ic= subSequence(cipherText,i);
- System.out.print("Klucz o długości "+i+": ");
- for(int j=0;j<ic.length;j++){
- System.out.print(ic[j]+" ");
- }
- System.out.println();
- }
- }
- public static double[] subSequence(String text, int k) {
- String sub = "";
- double[] ic = new double[k];
- for (int i = 0; i < k; i++) {
- for (int j = i; j < text.length(); j += k) {
- sub += text.substring(j, j + 1);
- }
- ic[i]=indexOfCoincidence(frequencyAnalysis(sub),sub.length());
- sub = "";
- }
- return ic;
- }
- public static int[] frequencyAnalysis(String text){
- int [] frequencies = new int[26];
- for(int i=0;i<text.length();i++){
- frequencies[text.charAt(i)-'A']++;
- }
- return frequencies;
- }
- public static double indexOfCoincidence(int[] frequencies, int n){
- double indexOfCoincidence =0.0;
- double lower=n*(n-1);
- for(int i=0;i<frequencies.length;i++){
- double upper = frequencies[i]*(frequencies[i]-1);
- indexOfCoincidence += upper/lower;
- }
- return indexOfCoincidence;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement