Abbiamo un servizio di login silenzioso scritto in Coldfusion9 che accetta stringhe crittografate da sistemi esterni e quindi decripta in base ad un setup Algorithm/Encoding concordato. Questo ha funzionato senza problemi per anni dai sistemi che eseguono ASP/JAVA/PHP, ma ora abbiamo un client che non ha altra scelta che usare CryptoJS per eseguire la crittografia e per la vita di me non riesco a capire perché questo non decifrare in Coldfusion.AES Encrypt in CryptoJS e decifrare in Coldfusion
La mia conoscenza di crittografia non è brillante, ma la cosa che sto notando è il testo cifrato CryptoJS criptati per l'esatta stessa stringa/chiave è diversa ogni volta che effettuo la crittografia mentre in Coldfusion/Java posso sempre aspettarsi la stessa identica criptato stringa. Non sono sicuro se questo è legato alla codifica o meno, ma non ho mai incontrato questo problema accettando stringhe crittografate da qualsiasi altro sistema prima, quindi spero che sia il modo in cui sto crittografando in CryptoJS che non è corretto.
<cfoutput>
<!--- Set String and Key --->
<cfset theKey = toBase64("1234567812345678")>
<cfset string = "[email protected]">
<!--- 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>
il codice di esempio non viene eseguito perché si puo' mescolare le variabili JavaScript e ColdFusion insieme come siete. JavaScript è lato client e ColdFusion è lato server, non possono parlare di come stai cercando di farli funzionare. –
Matt quando questo script viene eseguito come CFM e analizzato/compilato da Coldfusion, queste variabili verranno valutate prima dell'esecuzione del javascript. Ho lavorato su molti progetti nel corso degli anni in cui coldfusion e javascript si stanno scambiando i dati, penso che il problema qui sia legato alla codifica in CryptoJS e mi sto avvicinando da un punto di vista semplicistico. –
Encryptedemail non è definito ovunque. Questo non è il tuo problema generale, ma il codice di esempio non dà l'errore che dici che lo fa –