所以我有一种情况需要在url上传递一些参数。为了在url上没有id = 1,我添加了一个简单的加密方法来模糊这些值。这在.Net土地上运行良好。然而,现在,我需要从经典的asp页面指向这个期望参数加密的.net页面。我真的不太熟悉加密或经典的asp,并希望有人能够指导我一个好的JS库,或者只是提供这个函数的经典asp版本?如果.Net代码有任何问题,我也很乐意听到有关这方面的反馈。
这是加密方法:
public static string Encrypt(string Input)
{
try
{
key = Encoding.UTF8.GetBytes(EncryptionKey.Substring(0, 8));
var des = new DESCryptoServiceProvider();
Byte[] inputByteArray = Encoding.UTF8.GetBytes(Input);
var ms = new MemoryStream();
var cs = new CryptoStream(ms, des.CreateEncryptor(key, IV), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
return Convert.ToBase64String(ms.ToArray());
}
catch (Exception)
{
return "";
}
}
这是解密方法(我需要这个来解密经典的asp加密文本):
public static string Decrypt(string Input)
{
try
{
key = Encoding.UTF8.GetBytes(EncryptionKey.Substring(0, 8));
var des = new DESCryptoServiceProvider();
var inputByteArray = Convert.FromBase64String(Input);
var ms = new MemoryStream();
var cs = new CryptoStream(ms, des.CreateDecryptor(key, IV), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
Encoding encoding = Encoding.UTF8;
return encoding.GetString(ms.ToArray());
}
catch (Exception)
{
return "";
}
}
感谢您的帮助!
答案 0 :(得分:7)
这不是一些简单的翻译! Classic ASP无法访问.NET Framework。你需要在Win32代码中完成所有这些。
您应该将C#代码打包为一个COM组件,然后可以从Classic ASP站点访问它。
答案 1 :(得分:1)
我在我们的网站上碰到了这个使用ASP& VB.NET。此外,内部实用程序是用C#,VB6和& S编写的。 VB.NET。所有程序都需要能够交换加密数据。
为了解决这个问题,我写了一篇VB6&我转换为.NET的VBScript加密例程。它允许我在平台上拥有相同的数据。加密&我选择的哈希是RC4和MD5。两个版本都通过多种功能得到了显着增强,例如MD5是一个加盐版本,RC4包含CRC检查和使用多个密钥进行双重加密的选项。
这是针对最低限度敏感的数据。对于非常敏感的数据,我编写了一个执行DES-3加密的VB6 DLL。然后,此DLL可供所有平台使用。
我将密码放在注册表中,使用其他加密方法使用硬件参数加密密码。 (如果你从注册表中获取它们并试图将它们放在另一个系统上,它们就不好了。)
答案 2 :(得分:0)
不是故意回答我自己的问题,但我无法将代码添加为评论。无论如何,我最终还是在客户端上实现了RC4。对于任何可能感兴趣的人(你是否正在使用经典的asp工作?:))这是相关的代码 - 希望它有所帮助!与往常一样,如果有人发现此代码段存在问题,请告诉我们!
谢谢,
马特
Dim sbox(255)
Dim key(255)
Sub RC4Initialize(strPwd)
dim tempSwap
dim a
dim b
intLength = len(strPwd)
For a = 0 To 255
key(a) = asc(mid(strpwd, (a mod intLength)+1, 1))
sbox(a) = a
next
b = 0
For a = 0 To 255
b = (b + sbox(a) + key(a)) Mod 256
tempSwap = sbox(a)
sbox(a) = sbox(b)
sbox(b) = tempSwap
Next
End Sub
Function EnDeCrypt(plaintxt)
dim temp
dim a
dim i
dim j
dim k
dim cipherby
dim cipher
i = 0
j = 0
RC4Initialize "somesortofpassword"
For a = 1 To Len(plaintxt)
i = (i + 1) Mod 256
j = (j + sbox(i)) Mod 256
temp = sbox(i)
sbox(i) = sbox(j)
sbox(j) = temp
k = sbox((sbox(i) + sbox(j)) Mod 256)
cipherby = Asc(Mid(plaintxt, a, 1)) Xor k
dim h
h = hex(cipherby)
if Len(h) = 1 then
h = "0" & h
end if
cipher = cipher & h
Next
EnDeCrypt = cipher
End Function