- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个数据库,其中包含通过 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_decrypt
和 hash() 运行密码。他们代替。它不仅是一种更好的密码存储方式,而且还具有与 C# 或支持标准算法的任何其他语言兼容的优势。
关于c# - ColdFusion - cfusion_encrypt() 和 cfusion_decrypt() - C# 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22289179/
0 使用 ColdFusion 的经验在这里。 把这个项目丢在我的办公 table 上,这是 4 年前某人写的,这个人不再在我公司工作了。 从实时托管网站获取日志,该行似乎存在错误。 第 196 行:
我有一个数据库,其中包含通过 cfusion_encrypt() 加密的用户密码。我需要为 C# 中的 ColdFusion 代码做一个登录替代。有没有什么简单的方法可以在 C# 中对此进行模拟,以便
我从这里找到了在 C# 中复制 cfusion_encrypt 函数的答案... ColdFusion - cfusion_encrypt() and cfusion_decrypt() - C# a
我是一名优秀的程序员,十分优秀!