-
-
Save joecliff/10948117 to your computer and use it in GitHub Desktop.
var CryptoJS = require("crypto-js");//replace thie with script tag in browser env | |
//encrypt | |
var rawStr = "hello world!"; | |
var wordArray = CryptoJS.enc.Utf8.parse(rawStr); | |
var base64 = CryptoJS.enc.Base64.stringify(wordArray); | |
console.log('encrypted:', base64); | |
//decrypt | |
var parsedWordArray = CryptoJS.enc.Base64.parse(base64); | |
var parsedStr = parsedWordArray.toString(CryptoJS.enc.Utf8); | |
console.log("parsed:",parsedStr); |
Thanks for this. I used this example inside of Postman to help to parse JSON Web Tokens from one request and pass data through to another. Worked perfectly since CryptoJS is already included 👍
Yea, It would be best if the words encrypt was changed to encode, and decrypt is changed to decode. It made me chuckle to read the word encrypt when encoding.
Thanks for this 👍
Thanks, simple but usefull. ^.^
Thanks a lot
I also used this for a Postman test and it worked beautifully, thank you sir.
Thanks
thinks ,i do not know why need CryptoJS.enc.Utf8.parse()
?
this does not convert JSON object
Very helpful thank you!
this does not convert JSON object
If i've understood what you're saying, you just need to do this:
//encrypt
var myObj = { foo: "bar" };
var rawStr = JSON.stringify(myObj);
var wordArray = CryptoJS.enc.Utf8.parse(rawStr);
...
Version with only one line each:
var CryptoJS = require("crypto-js"); //replace thie with script tag in browser env
//
var rawStr = "hello world!";
//encrypt
var base64 = CryptoJS.enc.Utf8.parse(rawStr).toString(CryptoJS.enc.Base64);
//decrypt
var parsedStr = CryptoJS.enc.Base64.parse(base64).toString(CryptoJS.enc.Utf8);
Someone may find it useful.
I noticed that Kubernetes encodes ssh private and public keys in its secrets (may SSL keys too) with base64 adding the trailing line at the end of a key.
For example, CryptoJS works the way similar to
$ echo -n 'Hello World' | base64
$ SGVsbG8gV29ybGQ=
-n
means that it does not add a trailing line. While keys in Kubernetes are encoded using a trailing line at the end (you can see a different result)
$ echo 'Hello World' | base64
$ SGVsbG8gV29ybGQK
So to make sure the keys are encoded the way it is meant by Kubernetes I tried the solution in Postman with a new line character - (plainText + '\n')
:
var plainText = pm.environment.get('github_ssh_private_key');
var encoded = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(plainText + '\n'));
pm.environment.set("github_ssh_private_key_base64", encoded);
awesooooom
this saves my day a lot, thanks!
Hallo can someone explain me the flow also how to decrypt back, if that was encrypted this way?
i am confused currently as still new to cryptography
// Code Section
{
function encrypt(data) {
const val = cryptoJS.enc.Utf8.parse(JSON.stringify(data));
const encrypted = cryptoJS.AES.encrypt(val, key, { iv: IV }).toString();
let b64 = cryptoJS.enc.Base64.parse(encrypted).toString(cryptoJS.enc.Hex);
return b64;
}
}
This gist saved me! Thank you so much!
thanks for this
I hope you realized encoding something in Base64 isn't "encryption" lol