簡體   English   中英

將代碼段從C#轉換為VBScript

[英]Convert snippet from c# to vbscript

所以我有一種情況,我需要在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 "";
    }
}

謝謝你的幫助!

這不是簡單的翻譯! 經典ASP無法訪問.NET Framework。 您將需要在Win32代碼中完成所有這些操作。

您應該將C#代碼打包為一個COM組件,然后可以從Classic ASP站點進行訪問。

我在我們使用ASP和VB.NET的網站上遇到了這個問題。 而且,內部實用程序是用C#,VB6和VB.NET編寫的。 所有程序都需要能夠交換加密的數據。

為了解決這個問題,我編寫了一個VB6和VBScript加密例程,並將其轉換為.NET。 它使我可以跨平台擁有相同的數據。 我選擇的加密和哈希是RC4和MD5。 兩者都通過多種功能得到了顯着增強,例如MD5是加鹽版,RC4包含CRC檢查和使用多個密鑰進行雙重加密的選項。

這是用於最小敏感數據的。 對於非常敏感的數據,我編寫了一個進行DES-3加密的VB6 DLL。 然后,此DLL可用於所有平台。

我將密碼放在注冊表中,並使用另一種加密方法使用密碼的硬件參數對其進行加密。 (如果您從注冊表中獲取它們並嘗試將它們放在另一個系統上,那么它們就不好了。)

並不是要回答我自己的問題,但我無法將代碼添加為注釋。 無論如何,我最終還是在客戶端上實現了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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM