crypto-js angular encryption and java decryption

ANGULAR / JS::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

 

encode(myString: string) {
  
// PROCESS
  
const encodedWord = CryptoJS.enc.Utf8.parse(myString); // encodedWord Array object
  
const encoded = CryptoJS.enc.Base64.stringify(encodedWord); // string: 'NzUzMjI1NDE='
  
return encoded;
}

decode(encoded: string) {
  
// PROCESS
  
const encodedWord = CryptoJS.enc.Base64.parse(encoded); // encodedWord via Base64.parse()
  
const decoded = CryptoJS.enc.Utf8.stringify(encodedWord); // decode encodedWord via Utf8.stringify() '75322541'
  
return decoded;
}

encryptTest(){
  
console.log('crypto-js', CryptoJS);
  
var decryptedBase64Key 'mustbe16byteskey';
  
var deparsedBase64Key this.encode(decryptedBase64Key);
  
console.log('deparsedBase64Key=',deparsedBase64Key);
  
console.log('parsedBase64Key=',this.decode(deparsedBase64Key));

  
var encryptedBase64Key 'bXVzdGJlMTZieXRlc2tleQ==';
  
var parsedBase64Key = CryptoJS.enc.Base64.parse(encryptedBase64Key);

  
var encryptedData null;
  {
    
// Encryption process
    
var plaintText "Please encrypt this message!";
    
// console.log( “plaintText = “ + plaintText );
    // this is Base64-encoded encrypted data
    
encryptedData = CryptoJS.AES.encrypt(plaintTextparsedBase64Key, {
      
mode: CryptoJS.mode.ECB,
      
padding: CryptoJS.pad.Pkcs7
    });
    
console.log"encryptedData = " encryptedData );
  }

  {
    
// Decryption process
    
var encryptedCipherText 'U2WvSc8oTur1KkrB6VGNDmA3XxJb9cC+T9RnqT4kD90=' // or encryptedData;
    
var decryptedData = CryptoJS.AES.decryptencryptedCipherTextparsedBase64Key, {
      
mode: CryptoJS.mode.ECB,
      
padding: CryptoJS.pad.Pkcs7
    } );
    
// console.log( “DecryptedData = “ + decryptedData );
    // this is the decrypted data as a string
    
var decryptedText decryptedData.toString( CryptoJS.enc.Utf8 );
    
console.log"DecryptedText = " decryptedText );
  }

}

 




JAVA::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

 

import java.security.Key;

import java.util.Base64;

import javax.crypto.Cipher;

import javax.crypto.spec.SecretKeySpec;

 

public class encryptionTest

{            

 

       private static final String ALGO = "AES"// Default uses ECB PKCS5Padding

      

       public static String encrypt(String Data, String secretthrows Exception {

              Key key = generateKey(secret);

              Cipher c = Cipher.getInstance(ALGO);

              c.init(Cipher.ENCRYPT_MODEkey);

              byte[] encVal = c.doFinal(Data.getBytes());

              String encryptedValue = Base64.getEncoder().encodeToString(encVal);

              return encryptedValue;

       }

      

       public static String decrypt(String strToDecrypt, String secret) {

              try {

                     Key key = generateKey(secret);

                     Cipher cipher = Cipher.getInstance(ALGO);

                     cipher.init(Cipher.DECRYPT_MODEkey);

                     return new String(cipher.doFinal(Base64.getDecoder().decode(strToDecrypt)));

              } catch (Exception e) {

                     System.out.println("Error while decrypting: " + e.toString());

              }

              return null;

       }

      

       private static Key generateKey(String secretthrows Exception {

              byte[] decoded = Base64.getDecoder().decode(secret.getBytes());

              Key key = new SecretKeySpec(decodedALGO);

              return key;

       }

      

       public static String decodeKey(String str) {

              byte[] decoded = Base64.getDecoder().decode(str.getBytes());

              return new String(decoded);

       }

      

       public static String encodeKey(String str) {

              byte[] encoded = Base64.getEncoder().encode(str.getBytes());

              return new String(encoded);

       }

      

       public static void main(String a[]) throws Exception {

              /*

              * Secret Key must be in the form of 16 byte like,

              *

              * private static final byte[] secretKey = new byte[] { ‘m’, ‘u’, ‘s’, ‘t’, ‘b’,

              * ‘e’, ‘1’, ‘6’, ‘b’, ‘y’, ‘t’,’e’, ‘s’, ‘k’, ‘e’, ‘y’};

              *

              * below is the direct 16byte string we can use

              */

              String secretKey = "mustbe16byteskey";

              String encodedBase64Key = encodeKey(secretKey);

              System.out.println("EncodedBase64Key = " + encodedBase64Key); // This need to be share between client and server

             

              // To check actual key from encoded base 64 secretKey

              String toDecodeBase64Key = decodeKey(encodedBase64Key);

              System.out.println("toDecodeBase64Key = "+toDecodeBase64Key);

             

              String toEncrypt = "Please encrypt this message!";

              System.out.println("Plain text = " + toEncrypt);

              // AES Encryption based on above secretKey

              String encrStr = encrypt(toEncryptencodedBase64Key);

              System.out.println("Cipher Text: Encryption of str = " + encrStr);

              // AES Decryption based on above secretKey

              String decrStr = decrypt(encrStrencodedBase64Key);

              System.out.println("Decryption of str = " + decrStr);

       }

 

}

 

 

 

Comments

Popular posts from this blog

Provision AWS EC2 Instance and RDS with Terraform, and Deploy Spring Boot App to EC2 Instance via GitHub Action Pipeline

JQuery UI Autocomplete, custom HTML structure for result?

Easy Ui Jquery easyui-textbox change onChange event