2013-04-01 1 views
0

У меня есть следующий скрипт, который пытается выбрать некоторые элементы из моей базы данных и расшифровать зашифрованные, проблема заключается в том, что ключ шифрования уникален с изменением 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> 
+0

Как в стороне, если эти данные важны, вы действительно должны переключиться на более сильный алгоритм. ['cfmx_compat' является наименее безопасным из доступных алгоритмов] (http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7c2f.html) и включен только для обратной совместимости со старыми версиями. – Leigh

ответ

3

Ваш вызов для расшифровки() в конце вашего образца кода имеет только один аргумент. Похоже, это может быть проблемой в ваших круглых скобках.

Это выглядит следующим образом:

decrypt(urldecode(encString, encrypt(request.eq, company_id))) 

, возможно, придется быть:

decrypt(urldecode(encString), encrypt(request.eq, company_id)) 

предполагая

  1. что вы зашифрованную строку в базе данных была затем URL-адрес кодируется перед вставкой.
  2. вы зашифровали строку ключом (request.eq, зашифрованным ключом company_id).
+0

Почему? Я открываю 3 круглые скобки и закрываю 3 ... оххх, понял. – bsteo

+0

Да! Ты прав! Спасибо! Я просто этого не видел ... – bsteo

 Смежные вопросы

  • Нет связанных вопросов^_^