パスワードは、AES を使用して .NET で暗号化され、データベースに保存されます。別のアプリケーションでは、javascript (Rhino エンジンの上) と cryptojs ライブラリを使用して、パスワードを復号化してから使用する必要があります。
ソリューションは複雑である必要はありません。私が求めているのは、この 2 人を連携させる方法を簡単に実装することだけです。
.NET で ("Key") のキーを使用して単純な文字列 ("SFTPPass") を正常に暗号化しましたが、javascript で復号化する方法がわかりません。
これは私が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});
ただし、出力をファイルに書き込むと、空になります。
提案や代替ソリューションは大歓迎です!
編集: alancnet の推奨により、出力を取得していますが、文字列が元の "1234" と一致しません。そのため、上記のリンクのガイドに従って、同じキー フレーズと入力文字列を使用してワイヤに到達しました。.NET で BitConverter.toString を使用して、キーと iv の両方の 16 進数をキャプチャしました。
key = "752DA9F0D612540EEF1DE07A144781261A3D604DE339174ADAC5D5D6A695ABFF"
iv = "9714413594225F1D14FA02101C0D584D"
私のjavascriptは今どのように見えますか:
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});