使用PHP加密和使用Coldfusion解密

问题描述

我们目前正在使用PHP对网站中的值进行加密,然后再将其写入MySQL表。我们可以使用PHP成功解密这些值,但是,我们还需要能够使用Coldfusion解密数据。不幸的是,我们无法使它正常工作。我正在寻找一种可以完成以下两项操作的解决方案:

  1. 成功使用我们现有的用PHP编写的加密代码/数据,并能够通过Coldfusion(首选)成功解密。
  2. 对我们现有的用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 (将#修改为@)