问题描述
我们目前正在使用PHP对网站中的值进行加密,然后再将其写入MySQL表。我们可以使用PHP成功解密这些值,但是,我们还需要能够使用Coldfusion解密数据。不幸的是,我们无法使它正常工作。我正在寻找一种可以完成以下两项操作的解决方案:
- 成功使用我们现有的用PHP编写的加密代码/数据,并能够通过Coldfusion(首选)成功解密。
- 对我们现有的用PHP编写的加密代码的修改,可以在Coldfusion中成功解密。
这是我们当前的PHP加密代码:
private $cipher="AES-128-CBC";
// Encrypt a value
private function encrypt($value,$key){
$ivlen = openssl_cipher_iv_length($this->cipher);
$iv = openssl_random_pseudo_bytes($ivlen);
$ciphertext_raw = openssl_encrypt($value,$this->cipher,$key,OPENSSL_RAW_DATA,$iv);
$hmac = hash_hmac('sha512',$ciphertext_raw,true);
$encryptedValue = base64_encode( $iv.$hmac.$ciphertext_raw );
return $encryptedValue;
}
这是我们当前的PHP解密代码:
// Decrypt a value
public function decrypt($encryptedValue,$key){
$val = base64_decode($encryptedValue);
$ivlen = openssl_cipher_iv_length($this->cipher);
$iv = substr($val,$ivlen);
$hmac = substr($val,$ivlen,$this->sha2len);
$ciphertext_raw = substr($val,$ivlen+$this->sha2len);
$decryptedValue = openssl_decrypt($ciphertext_raw,$iv);
return $decryptedValue;
}
我在Coldfusion中使用以下代码尝试了解密测试:
<cfset TestString="ltlXr0hdv8kE9v+VVJ8GmLYVfgPSZPr9QCL89QoMupFJrXNdYmFi7sp0wbx8CbzJycmzblLDB/zF5pXrmRasMoW8PGV7tfjnEsxv8LUt7xj/56tAMHRJxIRk01TdpNvJ">
<cfset KeyString="7w!z%C&F)J@NcRfUjXn2r5u8x/A?D(G-KaPdSgVkYp3s6v9y$B&E)H@MbQeThWmZ">
<cfset NewString='#Decrypt(TestString,KeyString,"AES","Base64")#'>
<cfoutput>#NewString#</cfoutput>
但是,失败并显示错误:
“错误”,“ ajp-nio-8018-exec-7”,“ 09/25/20”,“ 11:26:48”,“”,“尝试加密或解密输入时发生错误string:”无法解码字符串““ 7w!z%C&F)J @ NcRfUjXn2r5u8x / A?D(G-KaPdSgVkYp3s6v9y $ B&E)H @ MbQeThWmZ”“。包含或处理的文件的特定顺序为:C:\ inetpub \ wwwroot \ scheduled \ Decrypt_Test.cfm,第3行:
请注意,正确的解密值是: Arlene
有什么想法吗?任何帮助,将不胜感激。谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)