C# 使用Blowfish与Coldfusion和.NET/BouncyCastle对数据进行加密和解密
我正在尝试使用BouncyCastle for ASP.NET MVC模拟coldfusion Blowfish/Hex加密。我能够使用此链接中列出的步骤成功解密CF中加密的字符串: 除了在7个字符字符串的末尾添加一个\0之外,它的效果非常好 我并没有试图使用Blowfish/CBC/pkcs5p,只是使用Blowfish/Hex。我无法使反向(加密)工作。下面是我到目前为止的代码 我尝试过使用手动填充=,以及忽略。但是,即使使用附加字符,它仍然不会同步 解密(有效): 加密(不工作): “不起作用”的意思是-它返回一个加密字符串,该字符串与CF加密的字符串完全不同。除此之外,当使用上述方法解密时,返回的字符串与最初输入的内容不匹配(使用.NET/BouncyCastle加密)C代码将输入解码为base64,当它实际上只是纯文本时。因此,您加密了错误的值。这就是结果与来自CF的加密字符串不匹配的原因。由于CF始终使用UTF8,请使用以下命令:C# 使用Blowfish与Coldfusion和.NET/BouncyCastle对数据进行加密和解密,c#,encryption,coldfusion,bouncycastle,blowfish,C#,Encryption,Coldfusion,Bouncycastle,Blowfish,我正在尝试使用BouncyCastle for ASP.NET MVC模拟coldfusion Blowfish/Hex加密。我能够使用此链接中列出的步骤成功解密CF中加密的字符串: 除了在7个字符字符串的末尾添加一个\0之外,它的效果非常好 我并没有试图使用Blowfish/CBC/pkcs5p,只是使用Blowfish/Hex。我无法使反向(加密)工作。下面是我到目前为止的代码 我尝试过使用手动填充=,以及忽略。但是,即使使用附加字符,它仍然不会同步 解密(有效): 加密(不工作): “不起
byte[] inB = Encoding.UTF8.GetBytes(stringToEncrypt);
而不是:
byte[] inB = Hex.Encode(Convert.FromBase64String(stringToEncrypt));
其他安全提示:
你能详细解释一下“不起作用”吗?当然。它返回一个加密字符串,该字符串与CF加密的字符串完全不同。除此之外,当使用上述方法解密时,返回的字符串与最初输入的内容不匹配(使用.NET/BouncyCastle加密)。太好了,非常感谢!是的,“测试”只是为了说明。@MeanDean73-是的,我想你知道:-)但是很多人只是在网上复制和粘贴示例,可能没有意识到使用任意字符串作为加密密钥是。。。好。。。坏-;)
byte[] inB = Encoding.UTF8.GetBytes(stringToEncrypt);
byte[] inB = Hex.Encode(Convert.FromBase64String(stringToEncrypt));