У меня есть следующий скрипт, который пытается выбрать некоторые элементы из моей базы данных и расшифровать зашифрованные, проблема заключается в том, что ключ шифрования уникален с изменением company_id
, которое у меня есть в моей таблице:CFML расшифровать строку из базы данных на лету
<cfset request.ek = "password">
<!-- <cfset encKey = encrypt(request.ek, company_id)> -->
<!-- <cfset decrypted = decrypt(urldecode(arguments.mystring), encKey)> -->
<cfquery name="header" datasource="MyDB">
SELECT TOP 10
ID,
company_id,
encString
FROM
dbo.[TableName];
</cfquery>
<cfoutput>ID|company_id|encString<br></cfoutput>
<cfloop query="header">
<cfoutput>#ID#|#company_id#|#decrypt(urldecode(encString, encrypt(request.eq, company_id)))#<br></cfoutput>
</cfloop>
Я получаю эту ошибку:
Parameter validation error for the DECRYPT function.
The function accepts 2 to 6 parameters.
EDIT. Спасибо, Скотт Строз, я действительно испортил круглые скобки. Мой код должен быть:
<cfset request.ek = "password">
<!-- <cfset encKey = encrypt(request.ek, company_id)> -->
<!-- <cfset decrypted = decrypt(urldecode(arguments.mystring), encKey)> -->
<cfquery name="header" datasource="MyDB">
SELECT TOP 10
ID,
company_id,
encString
FROM
dbo.[TableName];
</cfquery>
<cfoutput>ID|company_id|encString<br></cfoutput>
<cfloop query="header">
<cfoutput>#ID#|#company_id#|#decrypt(urldecode(encString), encrypt(request.eq, company_id))#<br></cfoutput>
</cfloop>
Как в стороне, если эти данные важны, вы действительно должны переключиться на более сильный алгоритм. ['cfmx_compat' является наименее безопасным из доступных алгоритмов] (http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7c2f.html) и включен только для обратной совместимости со старыми версиями. – Leigh