当前位置: 首页 > 编程语言 > C#

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

时间:2023-04-10 15:02:39 C#

ColdFusion-cfusion_encrypt()和cfusion_decrypt()-C#替代方案我需要在C#中为ColdFusion代码重写登录。有没有一种简单的方法可以在C#中对此进行模拟,以便我可以比较用户密码的加密值并将它们与ColdFusion值相匹配?名字不好的cfusion_encrypt()根本不是加密。它是一种内部遗留混淆算法,强烈建议不要使用它。本质上它只是对字节进行异或,类似于此处描述的方法(忽略cfmx_compat的提及,这是一种不同的遗留算法)。它提取纯文本字符串的字节。然后将提供的密钥字符串填充到相同的长度,并再次提取字节。最后,xor是两个字节数组并将结果编码为十六进制://xorbytesbyte[]result=newbyte[textBytes.Length];for(inti=0;icfusion_decrypt()函数基本上只是将十六进制字符串首先解码为字节,并将“去混淆”结果作为普通字符串而不是十六进制返回。现在你可以明白为什么不鼓励使用它了。作为@MartyPine等人的建议,更好的选择是让CF端做备份,然后通过cfusion_decrypt和hash()运行密码。不仅是一种更好的密码存储方式,还有一个好处是兼容使用C#或支持标准算法的任何其他语言。这可能无法回答你的问题,但我能告诉的最佳选择是将Coldfusion循环编码为:cfusion_decrypt()密码以C#友好格式散列密码我不知道cfusion_decrypt和cfusion_encrypt的任何C#本机等效项,但希望这里的人们可以指出你。如果您需要Adob??e在ColdFusion11中默默弃用的内置“cfusion_encrypt”和“cfusion_decrypt”未记录函数,开发人员在2005年将它们转换为UDF。http://www.barneyb.com/barneyblog/2005/10/28/cfusion_encryptcfusion_decrypt-udfs/函数binaryXOR(n1,n2){n1=formatBaseN(n1,2);n2=formatBaseN(n2,2);返回inputBaseN(替换(n1+n2,2,0,"全部"),2);}functionfusion_encrypt(string,key){vari="";变量结果=“”;key=repeatString(key,ceiling(len(string)/len(key)));对于(i=1;iLTElen(string);i=i+1){result=result&rJustify(formatBaseN(binaryXOR(asc(mid(string,i,1))),asc(mid(key,i,1))),16),2);}returnucase(replace(result,"","0","all"));}functionfusion_decrypt(string,key){vari="";变量结果=“”;key=repeatString(key,ceiling(len(string)/2/len(key)));对于(i=2;iLTElen(string);i=i+2){result=result&chr(binaryXOR(inputBaseN(mid(string,i-1,2),16),asc(mid(key,我/2,1))));}返回结果;}这是关于如何测试它的示例脚本:Stringcfusion_encryptfusion_encryptcfusion_decryptfusion_decrypt#i##cfusion_encrypt(i,key)#ERROR#fusion_encrypt(i,key)#ERROR#cfusion_decrypt(cfusion_encrypt(i,key),key)#ERROR#fusion_decrypt(fusion_encrypt(i,key),key)#ERROR可能最简单的解决方案是创建一个将与你的一个交互式ColdFusion服务层,但是你需要处理这个服务的安全性,当然如果你想要一种方法来保存密码如果你不想要一个CF服务层那么你需要做的是弄清楚什么样的正在使用加密。如果它是一种常见的哈希算法,如:MD5SHA1SHA256SHA384SHA512,那么你就有机会解决这个问题。我在www.fusionauthority.com上发现了一篇旧文章,上面写着:CFusion_Encrypt()/CFusion_Decrypt()在ColdFusion中是“管理的”,除此处外没有在任何地方记录。Allaire反对使用它们,也不支持使用它们。以上就是C#学习教程的全部内容:ColdFusion–cfusion_encrypt()andcfusion_decrypt()–C#alternatives。如果对大家有用,需要了解更多C#学习教程,希望大家多多关注---网络收藏不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: