寻求帮助:VBScript加密算法转换成C#代码
在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;
}
谢谢!