2021-08-26 16:32:59 +01:00
|
|
|
import { Injectable } from '@angular/core';
|
|
|
|
|
import CryptoJS from 'crypto-js';
|
|
|
|
|
|
|
|
|
|
@Injectable({
|
|
|
|
|
providedIn: 'root'
|
|
|
|
|
})
|
|
|
|
|
export class AESEncrypt {
|
|
|
|
|
|
|
|
|
|
ivArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
|
|
|
|
|
constructor() { }
|
|
|
|
|
|
|
|
|
|
encrypt(encryptData, pass) {
|
|
|
|
|
var text = "Pro-it te espera!!!!";
|
|
|
|
|
//Creating the Vector Key
|
|
|
|
|
var iv = CryptoJS.enc.Hex.parse(this.toHexString(this.ivArray));
|
|
|
|
|
//Encoding the Password in from UTF8 to byte array
|
|
|
|
|
var Pass = CryptoJS.enc.Utf8.parse(pass);
|
|
|
|
|
//Encoding the Salt in from UTF8 to byte array
|
|
|
|
|
var Salt = CryptoJS.enc.Utf8.parse("gabinetedigital");
|
|
|
|
|
//Creating the key in PBKDF2 format to be used during the decryption
|
|
|
|
|
var key128Bits1000Iterations = CryptoJS.PBKDF2(Pass.toString(CryptoJS.enc.Utf8), Salt, { keySize: 128 / 32, iterations: 1000 });
|
|
|
|
|
|
|
|
|
|
//Decrypting the string contained in cipherParams using the PBKDF2 key
|
|
|
|
|
var decrypted = CryptoJS.AES.encrypt(encryptData, key128Bits1000Iterations, { mode: CryptoJS.mode.CBC, iv: iv, padding: CryptoJS.pad.Pkcs7 });
|
2022-01-07 11:21:14 +01:00
|
|
|
// console.log('AES encrypt',decrypted.toString());
|
2021-08-27 10:13:35 +01:00
|
|
|
|
|
|
|
|
return decrypted.toString();
|
2021-08-26 16:32:59 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
decrypt(deceyptData,pass) {
|
|
|
|
|
|
|
|
|
|
//Creating the Vector Key
|
|
|
|
|
var iv = CryptoJS.enc.Hex.parse(this.toHexString(this.ivArray));
|
|
|
|
|
//Encoding the Password in from UTF8 to byte array
|
|
|
|
|
var Pass = CryptoJS.enc.Utf8.parse(pass);
|
|
|
|
|
//Encoding the Salt in from UTF8 to byte array
|
|
|
|
|
var Salt = CryptoJS.enc.Utf8.parse("gabinetedigital");
|
|
|
|
|
//Creating the key in PBKDF2 format to be used during the decryption
|
|
|
|
|
var key128Bits1000Iterations = CryptoJS.PBKDF2(Pass.toString(CryptoJS.enc.Utf8), Salt, { keySize: 128 / 32, iterations: 1000 });
|
|
|
|
|
//Enclosing the test to be decrypted in a CipherParams object as supported by the CryptoJS libarary
|
|
|
|
|
var cipherParams = CryptoJS.lib.CipherParams.create({
|
|
|
|
|
ciphertext: CryptoJS.enc.Base64.parse(deceyptData)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
//Decrypting the string contained in cipherParams using the PBKDF2 key
|
|
|
|
|
var decrypted = CryptoJS.AES.decrypt(cipherParams, key128Bits1000Iterations, { mode: CryptoJS.mode.CBC, iv: iv, padding: CryptoJS.pad.Pkcs7 });
|
2021-08-27 10:13:35 +01:00
|
|
|
|
|
|
|
|
return decrypted.toString(CryptoJS.enc.Utf8);
|
2021-08-26 16:32:59 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
toHexString(byteArray) {
|
|
|
|
|
return Array.from(byteArray, (value: any) => {
|
|
|
|
|
return ('0' + (value & 0xFF).toString(16)).slice(-2);
|
|
|
|
|
}).join('')
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|