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

Easy Ui Jquery easyui-textbox change onChange event

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

npm install gets stuck at fetchMetadata