Advertisement
Guest User

Untitled

a guest
Jan 20th, 2019
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 KB | None | 0 0
  1. public static void estimateKeyLength(String cipherText, int suggestLength){
  2.  
  3. double[] ic;
  4. for(int i=1;i<=suggestLength;i++){
  5. ic = new double[i];
  6. ic= subSequence(cipherText,i);
  7. System.out.print("Klucz o długości "+i+": ");
  8. for(int j=0;j<ic.length;j++){
  9. System.out.print(ic[j]+" ");
  10. }
  11. System.out.println();
  12. }
  13. }
  14.  
  15. public static double[] subSequence(String text, int k) {
  16. String sub = "";
  17. double[] ic = new double[k];
  18. for (int i = 0; i < k; i++) {
  19. for (int j = i; j < text.length(); j += k) {
  20. sub += text.substring(j, j + 1);
  21. }
  22. ic[i]=indexOfCoincidence(frequencyAnalysis(sub),sub.length());
  23. sub = "";
  24. }
  25. return ic;
  26. }
  27.  
  28. public static int[] frequencyAnalysis(String text){
  29. int [] frequencies = new int[26];
  30.  
  31. for(int i=0;i<text.length();i++){
  32. frequencies[text.charAt(i)-'A']++;
  33. }
  34.  
  35. return frequencies;
  36. }
  37.  
  38. public static double indexOfCoincidence(int[] frequencies, int n){
  39. double indexOfCoincidence =0.0;
  40. double lower=n*(n-1);
  41. for(int i=0;i<frequencies.length;i++){
  42. double upper = frequencies[i]*(frequencies[i]-1);
  43. indexOfCoincidence += upper/lower;
  44. }
  45. return indexOfCoincidence;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement