-
-
Save kennydude/3111592 to your computer and use it in GitHub Desktop.
// Encrypt where jo is input, and query is output and ENCRPYTION_KEy is key | |
byte[] input = jo.toString().getBytes("utf-8"); | |
MessageDigest md = MessageDigest.getInstance("MD5"); | |
byte[] thedigest = md.digest(ENCRYPTION_KEY.getBytes("UTF-8")); | |
SecretKeySpec skc = new SecretKeySpec(thedigest, "AES/ECB/PKCS5Padding"); | |
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); | |
cipher.init(Cipher.ENCRYPT_MODE, skc); | |
byte[] cipherText = new byte[cipher.getOutputSize(input.length)]; | |
int ctLength = cipher.update(input, 0, input.length, cipherText, 0); | |
ctLength += cipher.doFinal(cipherText, ctLength); | |
String query = Base64.encodeToString(cipherText, Base64.DEFAULT); |
var decipher = crypto.createDecipher('aes-128-ecb', encryption_key); | |
chunks = [] | |
chunks.push( decipher.update( new Buffer(fullBuffer, "base64").toString("binary")) ); | |
chunks.push( decipher.final('binary') ); | |
var txt = chunks.join(""); | |
txt = new Buffer(txt, "binary").toString("utf-8"); | |
// where encryption_key = key, fullBuffer is the input and txt is output |
I have an error saying to create a class ENCRYPTION_KEY, please help here.
byte[] thedigest = md.digest(ENCRYPTION_KEY.getBytes("UTF-8"));And Base64.DEFAULTis not recognizing if anyone got this work please help
String query = Base64.encodeToString(cipherText, Base64.DEFAULT);
ENCRYPTION_KEY
is a constant, not a class. You can tell by the fact it used .getBytes(..)
, a method found on a String object.
If I remember, this works against Android at the time (a long time ago now). So this could have changed (you're following 7 year old code! Surely there's a StackOverflow answer that's newer!)
I have an error saying to create a class ENCRYPTION_KEY, please help here.
byte[] thedigest = md.digest(ENCRYPTION_KEY.getBytes("UTF-8"));
And Base64.DEFAULTis not recognizing if anyone got this work please help
String query = Base64.encodeToString(cipherText, Base64.DEFAULT);
ENCRYPTION_KEY
is a constant, not a class. You can tell by the fact it used.getBytes(..)
, a method found on a String object.If I remember, this works against Android at the time (a long time ago now). So this could have changed (you're following 7 year old code! Surely there's a StackOverflow answer that's newer!)
Thanks Kenny Its working good, for decryption I have an error at chunks.push(decipher.final('binary'));
internal/crypto/cipher.js:164
const ret = this._handle.final();
^
Error: error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length
at Decipher.final (internal/crypto/cipher.js:164:28)
Any suggestions please.
@ricky07 try this
var encrypt = function(data, key) {
var cipher = crypto.createCipher('aes-128-ecb', key);
return cipher.update(data, 'utf8', 'base64') + cipher.final('base64');
};var decrypt = function(data, key) {
var decipher = crypto.createDecipher('aes-128-ecb', key);
return decipher.update(data, 'base64', 'utf8') + decipher.final('utf8');
};
createCipher is now deprecated.
byte[] ivWrap = {0, 2, 4, 6, 2, 9, 5, 1, 4, 1, 5, 9, 2, 7, 1, 0};
ivWrapSpec = new IvParameterSpec(ivWrap);
byte[] key = (Key).getBytes("UTF-8");
MessageDigest sha = MessageDigest.getInstance("SHA-256");
key = sha.digest(key);
SecretKeySpec secretKeySpec = new SecretKeySpec(key, "AES");
can some one please give me node js code for above java code
Any example of encrypting at Node and decrypting at .Net or Java using BouncyCastle??
Java Encryption Code(https://repl.it/@ShehrazKhan/Encrypt-in-Java-Decrypt-in-Nodejs)
public static String encrypt(String Data, String secret) throws Exception {
Key key = generateKey(secret);
Cipher c = Cipher.getInstance(ALGO);
c.init(Cipher.ENCRYPT_MODE, key);
byte[] encVal = c.doFinal(Data.getBytes());
String encryptedValue = Base64.getEncoder().encodeToString(encVal);
return encryptedValue;
}
Node Js(https://codesandbox.io/s/decrypt-aes-in-node-encrypted-in-java-vph6w)
var encryptedBase64Key = "aXRzaG91bGRiZTE2Y2hhcg==";
var parsedBase64Key = CryptoJS.enc.Base64.parse(encryptedBase64Key);
var encryptedCipherText = "wbsl6Tegfc7mexCHUYPS+dON3BWfgU+tD1nkiHiZ4LyrHlUXlWsfeInWMDaZO39z"; // or encryptedData;
var decryptedData = CryptoJS.AES.decrypt(
encryptedCipherText,
parsedBase64Key,
{
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);
setDecryptedCipherText(decryptedText);
console.log("DecryptedText = " + decryptedText);
I've this error
Error: error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length
@monossido use this one instead
var decipher = crypto.createDecipher('aes-128-ecb', key); return decipher.update(encrypted, 'base64', 'utf8') + decipher. Final('utf8');
I am getting this error
Error: error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt
I have an error saying to create a class ENCRYPTION_KEY, please help here.
byte[] thedigest = md.digest(ENCRYPTION_KEY.getBytes("UTF-8"));
And Base64.DEFAULTis not recognizing if anyone got this work please help
String query = Base64.encodeToString(cipherText, Base64.DEFAULT);