gpt4 book ai didi

c# - ColdFusion - cfusion_encrypt() 和 cfusion_decrypt() - C# 替代方案

转载 作者:太空宇宙 更新时间:2023-11-03 17:14:44 26 4
gpt4 key购买 nike

我有一个数据库,其中包含通过 cfusion_encrypt() 加密的用户密码。我需要为 C# 中的 ColdFusion 代码做一个登录替代。有没有什么简单的方法可以在 C# 中对此进行模拟,以便我能够比较用户密码的加密值并将它们与 ColdFusion 值相匹配?

最佳答案

名字不好的 cfusion_encrypt() 不是 encryption根本。它是一种内部的遗留混淆算法,强烈建议不要使用它。

本质上它只是字节的异或,类似于the method described here (忽略 cfmx_compat 的提及,这是一种不同的遗留算法)。它提取纯文本字符串的字节。那么pads the supplied key string to the same length , 并再次提取字节。最后它对两个字节数组进行异或并将结果编码为十六进制:

 // xor bytes
byte[] result = new byte[textBytes.Length];
for (int i = 0; i < textBytes.Length; i++) {
results[i] = (byte)(textBytes[i] ^ keyBytes [i]);
}
// encode result as hex
String hexResult = BitConverter.ToString(results).Replace("-", "");

cfusion_decrypt() 函数本质上做同样的事情,只是先将十六进制字符串解码为字节,然后将“去混淆”结果作为普通字符串而不是十六进制返回。

现在您可以明白为什么不鼓励使用它了。正如@MartyPine 和其他人所建议的那样,更好的选择是让 CF 端进行备份,然后通过 cfusion_decrypthash() 运行密码。他们代替。它不仅是一种更好的密码存储方式,而且还具有与 C# 或支持标准算法的任何其他语言兼容的优势。

关于c# - ColdFusion - cfusion_encrypt() 和 cfusion_decrypt() - C# 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22289179/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com