CaesarCipher.java 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. import java.io.*;
  2. public class CaesarCipher {
  3. static String encrypt(String PlainText,int Key)
  4. {
  5. String cipherText="";
  6. int index=0,offset=0,charAscii=0,CharVal=0;
  7. //char ctext[]=new char[PlainText.length()] ;
  8. //PlainText.toLowerCase();
  9. //ctext=cipherText.toCharArray();
  10. System.out.println("PlainText Length: "+PlainText.length());
  11. for(index=0;index<PlainText.length();index++)
  12. {
  13. if(PlainText.charAt(index)==' '){
  14. cipherText+=' ';
  15. continue;
  16. }
  17. charAscii=PlainText.charAt(index)+Key;
  18. CharVal=PlainText.charAt(index);
  19. if((charAscii-48)>=10 && CharVal>=48 && CharVal<=57)// && charAscii<=58 )
  20. {
  21. offset=(charAscii-48)%10;
  22. cipherText+=(char)(offset+48);
  23. }
  24. else if((charAscii-97) >= 26 && CharVal>=97 && CharVal<=122)
  25. {
  26. offset=(charAscii-97)%26;
  27. cipherText+=(char)(offset+97);
  28. }
  29. else if((charAscii-65) >= 26 && CharVal>=65 && CharVal<=90)
  30. {
  31. offset=(charAscii-65)%26;
  32. cipherText+=(char)(offset+65);
  33. }
  34. else
  35. {
  36. //ctext[index]=(char) (PlainText.charAt(index)+3);
  37. //System.out.println((char) (PlainText.charAt(index)+3));
  38. cipherText+=((char) (PlainText.charAt(index)+Key));
  39. //System.out.println(cipherText);
  40. }
  41. }
  42. System.out.println("CipherText is: "+cipherText);
  43. return cipherText;
  44. }
  45. static String decrypt(String cipherText,int Key)
  46. {
  47. String PlainText="";
  48. int index=0,offset=0,charAscii=0,CharVal=0;
  49. //char ctext[]=new char[PlainText.length()] ;
  50. //PlainText.toLowerCase();
  51. //ctext=cipherText.toCharArray();
  52. System.out.println("CipherText Length: "+cipherText.length());
  53. for(index=0;index<cipherText.length();index++)
  54. {
  55. if(cipherText.charAt(index)==' '){
  56. PlainText+=' ';
  57. continue;
  58. }
  59. charAscii=cipherText.charAt(index)-Key;
  60. CharVal=cipherText.charAt(index);
  61. if((charAscii)<48 && CharVal>=48 && CharVal<=57)//&& charAscii>=38)
  62. {
  63. offset=(charAscii-48)%10;
  64. if(offset<0)
  65. offset=-(offset);
  66. if(offset==0)
  67. PlainText+='0';
  68. else
  69. PlainText+=(char)(57-offset+1);
  70. }
  71. else if(charAscii<65 && CharVal>=65 && CharVal<=90)
  72. {
  73. offset=(charAscii-65)%26;
  74. if(offset<0)
  75. offset=-(offset);
  76. if(offset==0)
  77. PlainText+='A';
  78. else
  79. PlainText+=(char)(90-offset+1);
  80. }
  81. else if((charAscii)<97 && CharVal>=97 && CharVal<=122)// && charAscii>90)
  82. {
  83. offset=(charAscii-97)%26;
  84. if(offset<0)
  85. offset=-(offset);
  86. if(offset==0)
  87. PlainText+='a';
  88. else
  89. PlainText+=(char)(122-offset+1);
  90. }
  91. else
  92. {
  93. //ctext[index]=(char) (PlainText.charAt(index)+3);
  94. //System.out.println((char) (PlainText.charAt(index)+3));
  95. PlainText+=((char) (cipherText.charAt(index)-Key));
  96. //System.out.println(cipherText);
  97. }
  98. }
  99. System.out.println("PlainText is: "+PlainText);
  100. return cipherText;
  101. }
  102. public static void main(String args[])
  103. {
  104. String ptext=null,cipherText=null;
  105. int Key=0;
  106. BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
  107. try {
  108. System.out.println("Enter the PlainText");
  109. ptext=br.readLine();
  110. System.out.println("Enter the Key");
  111. Key=Integer.parseInt(br.readLine());
  112. } catch (IOException e) {
  113. // TODO Auto-generated catch block
  114. System.out.println("Exception:"+e.getCause());
  115. }
  116. cipherText=encrypt(ptext,Key);
  117. decrypt(cipherText,Key);
  118. }
  119. }