Advertisement
Guest User

Untitled

a guest
Apr 29th, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1. import javax.crypto.Cipher;
  2. import javax.crypto.KeyGenerator;
  3. import javax.crypto.SecretKey;
  4. import javax.crypto.spec.IvParameterSpec;
  5. import javax.crypto.spec.SecretKeySpec;
  6. import java.security.SecureRandom;
  7. import java.util.Base64;
  8.  
  9. public class AESCrypto {
  10.  
  11. public static String keyToString(SecretKey secretKey){
  12. return Base64.getEncoder().encodeToString(secretKey.getEncoded());
  13. }
  14.  
  15. public static SecretKey stringToKey(String key) throws Exception {
  16. return new SecretKeySpec(key.getBytes("UTF-8"), "AES");
  17. }
  18.  
  19. public static String ivToString(IvParameterSpec ivParameterSpec){
  20. return Base64.getEncoder().encodeToString(ivParameterSpec.getIV());
  21. }
  22.  
  23. public static IvParameterSpec stringToIV(String string) throws Exception {
  24. return new IvParameterSpec(string.getBytes("UTF-8"));
  25. }
  26.  
  27.  
  28.  
  29. public static IvParameterSpec generateIV() throws Exception {
  30. SecureRandom randomSecureRandom = SecureRandom.getInstance("SHA1PRNG");
  31. byte[] iv = new byte[Cipher.getInstance("AES").getBlockSize()];
  32. randomSecureRandom.nextBytes(iv);
  33.  
  34. return new IvParameterSpec(iv);
  35. }
  36.  
  37. public static SecretKey generateKey() throws Exception {
  38. KeyGenerator keyGen = KeyGenerator.getInstance("AES");
  39. keyGen.init(128); // for example
  40. return keyGen.generateKey();
  41. }
  42.  
  43. public static String encryptString(SecretKey key, IvParameterSpec initVector, String plainText){
  44. try {
  45. Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
  46. cipher.init(Cipher.ENCRYPT_MODE, key, initVector);
  47.  
  48. byte[] encrypted = cipher.doFinal(plainText.getBytes());
  49. return Base64.getEncoder().encodeToString(encrypted);
  50. } catch (Exception ex) {
  51. ex.printStackTrace();
  52. }
  53.  
  54. return null;
  55. }
  56.  
  57. public static String decryptString(SecretKey key, IvParameterSpec initVector, String encryptedText) {
  58. try {
  59. Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
  60. cipher.init(Cipher.DECRYPT_MODE, key, initVector);
  61.  
  62. byte[] original = cipher.doFinal(Base64.getDecoder().decode(encryptedText));
  63. return new String(original);
  64. } catch (Exception ex) {
  65. ex.printStackTrace();
  66. }
  67. return null;
  68. }
  69.  
  70. public static String encryptString(String key, String initVector, String plainText) {
  71. try {
  72. SecretKeySpec keySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
  73. IvParameterSpec iv = new IvParameterSpec(initVector.getBytes("UTF-8"));
  74.  
  75. return encryptString(keySpec, iv, plainText);
  76. } catch (Exception ex) {
  77. ex.printStackTrace();
  78. }
  79. return null;
  80. }
  81.  
  82. public static String decryptString(String key, String initVector, String encryptedText) {
  83. try {
  84. SecretKeySpec keySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
  85. IvParameterSpec iv = new IvParameterSpec(initVector.getBytes("UTF-8"));
  86.  
  87. return decryptString(keySpec, iv, encryptedText);
  88. } catch (Exception ex) {
  89. ex.printStackTrace();
  90. }
  91. return null;
  92. }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement