Passwords are going to be encrypted in .NET using AES and stored in a database. In another application, using javascript (on top of a Rhino engine) and the cryptojs library, I'll need to decrypt the password and then use it.
The solution doesn't need to be complex, all I'm seeking is a simple implementation of how I can get these two guys to work together.
Followed this guide: http://www.aspsnippets.com/Articles/AES-Encryption-Decryption-Cryptography-Tutorial-with-example-in-ASPNet-using-C-and-VBNet.aspx
Successfully encrypted a simple string ("SFTPPass") with a key of ("Key") in .NET, but once I get to decrypting in javascript not sure how to do it.
This is what I have in javascript:
var encryptedPass = 'StrmZO1Vjd8noHYzXs8hiQQBQDJZA5Bpg3t4BcmrViU=';
var iv = CryptoJS.enc.Base64.parse('1Ph1oX+N+q/kzpdyaIKBpA==');
var key = CryptoJS.enc.Base64.parse('k/W+Xeenh3kSLneZ/DYXVpvshGbsFVdyfOFdFTJb1yE=');
var SFTPPass = CryptoJS.AES.decrypt(encryptedPass, 'Key', key, {iv: iv});
However when I write my output to a file it's empty.
Any suggestions or alternative solutions are greatly welcomed!
EDIT: With the recommendation by alancnet, I'm now getting output but the string doesn't match the original which is "1234". So I followed the guide in the link above down to the wire using the same Key Phrase and input string. Captured the hex of both the key & iv using BitConverter.toString in .NET.
key = "752DA9F0D612540EEF1DE07A144781261A3D604DE339174ADAC5D5D6A695ABFF"
iv = "9714413594225F1D14FA02101C0D584D"
What my javascript looks like now:
var encryptedPass = 'Ao5ZnFYo344iWqv/Jr9euw==';
var iv = CryptoJS.enc.Hex.parse('9714413594225F1D14FA02101C0D584D');
var key = CryptoJS.enc.Hex.parse('752DA9F0D612540EEF1DE07A144781261A3D604DE339174ADAC5D5D6A695ABFF');
var decryptedString = CryptoJS.AES.decrypt(encryptedPass, key, {iv: iv});
Your code:
var SFTPPass = CryptoJS.AES.decrypt(encryptedPass, 'Key', key, {iv: iv});
'Key'
is an unexpected parameter, and should be removed.
I ported your code to Node:
var CryptoJS = new require("cryptojs").Crypto;
var encryptedPass = 'StrmZO1Vjd8noHYzXs8hiQQBQDJZA5Bpg3t4BcmrViU=';
var iv = CryptoJS.util.base64ToBytes('1Ph1oX+N+q/kzpdyaIKBpA==');
var key = CryptoJS.util.base64ToBytes('k/W+Xeenh3kSLneZ/DYXVpvshGbsFVdyfOFdFTJb1yE=');
var SFTPPass = CryptoJS.util.bytesToBase64(
CryptoJS.AES.decrypt(
encryptedPass,
key,
{
iv: iv,
asBytes: true
}
)
);
console.log(SFTPPass);
and it ouput: UABfRxZLApVrt/t8JtoHMhCxfYUPWDwMLuBmWe50tDw=
Good luck :)