Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm C#和ColdFusion AES加密不匹配_Algorithm_C# 4.0_Encryption_Coldfusion_Aes - Fatal编程技术网

Algorithm C#和ColdFusion AES加密不匹配

Algorithm C#和ColdFusion AES加密不匹配,algorithm,c#-4.0,encryption,coldfusion,aes,Algorithm,C# 4.0,Encryption,Coldfusion,Aes,我必须在C#中加密url查询并传递到ColdFusion页面。有人能帮助我在C#net中使用AES算法编写加密代码,该算法相当于下面的ColdFusion函数吗?提前谢谢 <cfset strLink = Encrypt("top secret", "WTq8zYcZfaWVvMncigHqwQ==", "AES","Hex")> C#结果: 十六进制=89F9F3C55CD23262FE1E14240C479BE5B56210FF3913E7B6BA4BCD3C87F9AA7

我必须在C#中加密url查询并传递到ColdFusion页面。有人能帮助我在C#net中使用AES算法编写加密代码,该算法相当于下面的ColdFusion函数吗?提前谢谢

<cfset strLink = Encrypt("top secret", "WTq8zYcZfaWVvMncigHqwQ==", "AES","Hex")>
C#结果:

  • 十六进制=
    89F9F3C55CD23262FE1E14240C479BE5B56210FF3913E7B6BA4BCD3C87F9AA7
  • Base64=
    ifnzxVzSMjYv4eFCQMR5vltWIQ/zkT57a6S808h/mqc=
    • (来自评论…)

      这是一个完美的例子,说明了字符编码是如何产生巨大差异的

      信不信由你,这仅仅是因为在C代码中使用了错误的编码
      Encoding.Unicode使用,而CF的Encrypt函数总是使用(非常不同)。因此,C#代码加密的值与CF完全不同。因此结果不同,以及为什么C#字符串(十六进制)的长度比CF返回的长度长

      使用而不是
      Encoding.Unicode.GetBytes()
      ,结果将匹配:

      byte[] plainText = Encoding.UTF8.GetBytes("top secret");
      

      另外,一定要先搜索档案。这些问题并不少见,因此完全有可能您的问题已经被问到并得到了回答。如果没有,请发回您尝试的实际代码和任何错误消息。问题已更新,以使cfml代码“可见”Artjom-感谢您的回复。我已经编辑了问题并添加了更多细节。你现在能帮我吗?@Jayaprakash-谢谢。信不信由你,这仅仅是因为在C代码中使用了错误的编码<编码>编码。Unicode使用,而CF使用(非常不同)。因此,您的C#代码加密的值与CF完全不同。因此结果不同。改为使用
      Encoding.UTF8.GetBytes()
      ,结果将匹配。@哈弗:谢谢,已将答案标记为已接受。
      byte[] plainText = Encoding.UTF8.GetBytes("top secret");