寻求帮助:VBScript加密算法转换成C#代码

CorpXStudio 2009-01-01 12:37:44
在ASP页面有VBScript写的加密算法,现在需要换成C#来重写,研究了半天没有完全实现,在此寻求帮助。
VBScript写的加密代码:
<%
function mistake(preString)
Dim texts
Dim seed
Dim i,length
prestring = trim(preString) // 去除字符串首尾空格
length = len(preString) // 计算要加密的字符串的长度
seed = length
Randomize(length) // 使用 length 参数初始化 Rnd 函数的随机数生成器,赋给它新的种子值
texts = ""
for i = 1 to length
seed = int(94*rnd(-asc(mid(preString,i,1))-seed*asc(right(prestring,1)))+32)
texts = texts & chr(seed) & chr(int(94*rnd(-seed)+32))

next
dim dist // 定义目标字符串
dist="" // 初始化目标字符串
for i = 1 to len(texts)
if mid(texts,i,1)<>"'" then
dist=dist+mid(texts,i,1)
end if
next
mistake = dist
end function
%>

翻译后的C#代码:
public static string Encrypt(string plainText)
{
// Translate from ASP encryption
string texts = null;
int seed = 0;
//int i = 0;
plainText = plainText.Trim();
int length = plainText.Length;
//Random rnd = new Random(length);

seed = length;
//int random = rnd.Next();
int currentCharInt = 0;
int lastCharInt = (int)plainText[plainText.Length - 1];
double randomDouble = 0.0;
int tempSeed = 0;

for (int i = 0; i < length; i++)
{
currentCharInt = (int)plainText[i];
tempSeed = -currentCharInt - seed * lastCharInt;
randomDouble = new Random(tempSeed).NextDouble();
seed = (int)(94 * randomDouble + 32);
texts = texts + (char)seed + (char)((int)(94 * new Random(-seed).NextDouble() + 32));
}
string dist = string.Empty;
for (int i = 0; i < texts.Length; i++)
{
if (texts[i] != '\'')
{
dist = dist + texts[i];
}
}

return dist;
}

谢谢!
...全文
387 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
CorpXStudio 2009-01-02
  • 打赏
  • 举报
回复
谢谢Rookie_CEO!
是在把一个ASP网站迁移到ASP.NET时候遇到这个问题,网站原来用户注册时使用的是上面的加密算法,现在需要把老用户都迁移到新网站当中,以让老用户不受网站迁移的影响。
目前考虑有两种方案,一是在新网站里沿用以前的加密算法,二是找出以前加密算法的破解算法,把老用户的密码全部更新。转换成C#的是在验证第一种方案的可行性。

相同的种子,测试时发现,VBScript与C#产生的随机数不一样。这样第一种方案就遇到了一个难题:用C#重写以前的加密算法,老用户将无法登录网站(登录时是把密码加密然后与数据库里的密码字段匹配)。
01Byte空间 2009-01-01
  • 打赏
  • 举报
回复
md5 虽然已经被王小云教授 破解了
但是 现在银行(中国的银行)还是采用这种加密算法哦 不知道你这个加密 要干什么
直接用md5加密(或者SHA-1)就可以啊 .net的框架下 有这两种算法


加密算法如下:密文 = FormsAuthentication.HashPasswordForStoringInConfigFile(明文 ,“md5”或“sha1” )

随机数的产生范围 是你自己定的 产生的数当然是随即的啊 不一样正常啊...
CorpXStudio 2009-01-01
  • 打赏
  • 举报
回复
后来经过测试,发现VBScript产生的随机数和.NET产生的随机数值不一样。

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧