外部システムから暗号化された文字列を受け取り、合意されたアルゴリズム/エンコーディングのセットアップに基づいて復号化する、Coldfusion9 で記述されたサイレント ログイン サービスがあります。これは、ASP/JAVA/PHP を実行しているシステムから何年もの間問題なく機能していましたが、現在、CryptoJS を使用して暗号化を実行するしかないクライアントがあり、私の人生では、なぜこれが機能しないのかわかりませんColdfusion で復号化します。
暗号化に関する私の知識は素晴らしいものではありませんが、CryptoJS で暗号化されたまったく同じ文字列/キーの暗号文は、暗号化を実行するたびに異なることに気付きましたが、Coldfusion/Java では常にまったく同じ暗号化された文字列を期待できます。これがエンコーディングに関連しているかどうかはわかりませんが、以前に他のシステムから暗号化された文字列を受け入れるこの問題に遭遇したことはないので、CryptoJS で暗号化する方法が間違っていることを願っています。
<cfoutput>
<!--- Set String and Key --->
<cfset theKey = toBase64("1234567812345678")>
<cfset string = "max.brenner@google.com.au">
<!--- CryptoJS AES Libraries --->
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/components/enc-base64-min.js"></script>
<script>
// Encrypt String using CryptoJS AES
var encrypted = CryptoJS.AES.encrypt("#string#", "#theKey#");
console.log(encrypted.toString());
// Decrypt String using CryptoJS AES
var decrypted = CryptoJS.AES.decrypt(encrypted, "#theKey#");
console.log(decrypted.toString(CryptoJS.enc.Utf8));
</script>
<!--- Coldfusion Decrypt String / FAILS --->
Decrypted: #decrypt(encryptedEmail, "#theKey#", "AES", "BASE64")#
</cfoutput>