在ASP.NET中加密

时间:2011-09-02 20:05:39

标签: asp.net vb.net

我有一个VBScript脚本,我想在ASP.NET中运行,是否有人可以帮助在ASP.NET,C#中重写此函数,以便它返回相同的加密算法?这是一个ASP.NET加密函数,转换为经典ASP用法,但我需要使用ASP.NET代码。考虑到它使用ASP.NET加密方法,这个代码在ASP.NET中会是什么样子?

Public Function EncryptAES(ByVal sIn As String, ByVal sKey As String) As String
    Dim AES As New RijndaelManaged
    Dim ahashMD5 As New MD5CryptoServiceProvider()
    AES.Key = ahashMD5.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(sKey))
    AES.Mode = CipherMode.ECB
    Dim AESEncrypt As ICryptoTransform = AES.CreateEncryptor()
    Dim aBuffer As Byte() = System.Text.ASCIIEncoding.ASCII.GetBytes(sIn)
    Return Convert.ToBase64String(AESEncrypt.TransformFinalBlock(aBuffer, 0, aBuffer.Length))
End Function

Public Function DecryptAES(ByVal sOut As String, ByVal sKey As String) As String
    Dim dAES As New RijndaelManaged
    Dim dahashMD5 As New MD5CryptoServiceProvider()
    dAES.Key = dahashMD5.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(sKey))
    dAES.Mode = CipherMode.ECB
    Dim dAESDecrypt As ICryptoTransform = dAES.CreateDecryptor()
    sOut = Replace(sOut, " ", "+", 1, -1, CompareMethod.Text)
    Dim daBuffer As Byte() = Convert.FromBase64String(sOut)
    Return System.Text.ASCIIEncoding.ASCII.GetString(dAESDecrypt.TransformFinalBlock(daBuffer, 0, daBuffer.Length))
End Function

4 个答案:

答案 0 :(得分:1)

  

我有一个经典ASP脚本

男人,这是纯粹的.NET代码。因此,将.NET转换为.NET几乎没有意义。

如果你想将这个VB.NET代码转换为C#,它的外观如下:

public string EncryptAES(string sIn, string sKey)
{
    RijndaelManaged AES = new RijndaelManaged();
    MD5CryptoServiceProvider ahashMD5 = new MD5CryptoServiceProvider();
    AES.Key = ahashMD5.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(sKey));
    AES.Mode = CipherMode.ECB;
    ICryptoTransform AESEncrypt = AES.CreateEncryptor();
    byte[] aBuffer = System.Text.ASCIIEncoding.ASCII.GetBytes(sIn);
    return Convert.ToBase64String(AESEncrypt.TransformFinalBlock(aBuffer, 0, aBuffer.Length));
}

public string DecryptAES(string sOut, string sKey)
{
    RijndaelManaged dAES = new RijndaelManaged();
    MD5CryptoServiceProvider dahashMD5 = new MD5CryptoServiceProvider();
    dAES.Key = dahashMD5.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(sKey));
    dAES.Mode = CipherMode.ECB;
    ICryptoTransform dAESDecrypt = dAES.CreateDecryptor();
    sOut = sOut.Replace(" ", "+");
    byte[] daBuffer = Convert.FromBase64String(sOut);
    return System.Text.ASCIIEncoding.ASCII.GetString(dAESDecrypt.TransformFinalBlock(daBuffer, 0, daBuffer.Length));
}

答案 1 :(得分:1)

您始终可以使用Telerik Code Converter。 在下面找到。

public string EncryptAES(string sIn, string sKey)
{
    RijndaelManaged AES = new RijndaelManaged();
    MD5CryptoServiceProvider ahashMD5 = new MD5CryptoServiceProvider();
    AES.Key = ahashMD5.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(sKey));
    AES.Mode = CipherMode.ECB;
    ICryptoTransform AESEncrypt = AES.CreateEncryptor();
    byte[] aBuffer = System.Text.ASCIIEncoding.ASCII.GetBytes(sIn);
    return Convert.ToBase64String(AESEncrypt.TransformFinalBlock(aBuffer, 0, aBuffer.Length));
}

public string DecryptAES(string sOut, string sKey)
{
    RijndaelManaged dAES = new RijndaelManaged();
    MD5CryptoServiceProvider dahashMD5 = new MD5CryptoServiceProvider();
    dAES.Key = dahashMD5.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(sKey));
    dAES.Mode = CipherMode.ECB;
    ICryptoTransform dAESDecrypt = dAES.CreateDecryptor();
    sOut = Strings.Replace(sOut, " ", "+", 1, -1, CompareMethod.Text);
    byte[] daBuffer = Convert.FromBase64String(sOut);
    return System.Text.ASCIIEncoding.ASCII.GetString(dAESDecrypt.TransformFinalBlock(daBuffer, 0, daBuffer.Length));
}

答案 2 :(得分:0)

您可以使用this tool将VB.Net代码转换为C#。

@Darin Dimitrov指出这绝对是VB.Net,绝对不是VBScript / VB6 / ASP Classic

答案 3 :(得分:0)

不幸的是,转换工具无法修复代码问题。所有这些一次性物品都给我惊恐发作。

public string EncryptAES(string sIn, string sKey)
{
    using (var secure = new RijndaelManaged())
    {
        using (var ahashMd5 = new MD5CryptoServiceProvider())
        {
            secure.Key = ahashMd5.ComputeHash(Encoding.ASCII.GetBytes(sKey));
            secure.Mode = CipherMode.ECB;
            using (ICryptoTransform aesEncrypt = secure.CreateEncryptor())
            {
                byte[] aBuffer = Encoding.ASCII.GetBytes(sIn);
                return Convert.ToBase64String(
                          aesEncrypt.TransformFinalBlock(
                              aBuffer, 0, aBuffer.Length));
            }
        }
    }
}

public string DecryptAES(string sOut, string sKey)
{
    using (var secure = new RijndaelManaged())
    {
        using (var dahashMd5 = new MD5CryptoServiceProvider())
        {
            secure.Key = dahashMd5.ComputeHash(Encoding.ASCII.GetBytes(sKey));
            secure.Mode = CipherMode.ECB;
            using (ICryptoTransform dAesDecrypt = secure.CreateDecryptor())
            {
                sOut = sOut.Replace(" ", "+");
                byte[] daBuffer = Convert.FromBase64String(sOut);
                return Encoding.ASCII.GetString(
                        dAesDecrypt.TransformFinalBlock(
                            daBuffer, 0, daBuffer.Length));
            }
        }
    }
}