以前收集的一些資料---使用ASP密碼編譯演算法加密你的資料(二)

來源:互聯網
上載者:User
加密|資料|演算法          以前收集的一些資料---使用ASP密碼編譯演算法加密你的資料(二)
Julain Sitkewich
在第一部分,討論了如何產生密鑰,下面將介紹如何使用這個密鑰來加密和解密一個
字串。
下面的代碼就是能夠同時實現這個功能的函數
Crypt.asp檔案
<%
Dim g_Key

Const g_CryptThis = "Now is the time for all good men to come to the aid of their country."
Const g_KeyLocation = "c:\key.txt"

g_Key = mid(ReadKeyFromFile(g_KeyLocation),1,Len(g_CryptThis))

Response.Write "<p>ORIGINAL STRING: " & g_CryptThis & "<p>"
Response.Write "<p>KEY VALUE: " & g_Key  & "<p>"
Response.Write "<p>ENCRYPTED CYPHERTEXT: " & EnCrypt(g_CryptThis) & "<p>"
Response.Write "<p>DECRYPTED CYPHERTEXT: " & DeCrypt(EnCrypt(g_CryptThis)) & "<p>"

Function EnCrypt(strCryptThis)
   Dim strChar, iKeyChar, iStringChar, i
   for i = 1 to Len(strCryptThis)
      iKeyChar = Asc(mid(g_Key,i,1))
      iStringChar = Asc(mid(strCryptThis,i,1))
      ' *** uncomment below to encrypt with addition,
      ' iCryptChar = iStringChar + iKeyChar
      iCryptChar = iKeyChar Xor iStringChar
      strEncrypted =  strEncrypted & Chr(iCryptChar)
   next
   EnCrypt = strEncrypted
End Function

Function DeCrypt(strEncrypted)
Dim strChar, iKeyChar, iStringChar, i
   for i = 1 to Len(strEncrypted)
      iKeyChar = (Asc(mid(g_Key,i,1)))
      iStringChar = Asc(mid(strEncrypted,i,1))
      ' *** uncomment below to decrypt with subtraction    
      ' iDeCryptChar = iStringChar - iKeyChar
      iDeCryptChar = iKeyChar Xor iStringChar
      strDecrypted =  strDecrypted & Chr(iDeCryptChar)
   next
   DeCrypt = strDecrypted
End Function

Function ReadKeyFromFile(strFileName)
   Dim keyFile, fso, f
   set fso = Server.CreateObject("Scripting.FileSystemObject")
   set f = fso.GetFile(strFileName)
   set ts = f.OpenAsTextStream(1, -2)

   Do While not ts.AtEndOfStream
     keyFile = keyFile & ts.ReadLine
   Loop

   ReadKeyFromFile =  keyFile
End Function

%>  
    在Crypt.asp中我們首先從密鑰檔案中得到密鑰值,然後從這段密鑰中
截取和我們需要加密的明文同樣長度的密鑰。然後使用一個簡單的異或操作
將明文和密鑰進行運算,那麼得到的結果就是加密後的密文了。過程很簡單的。
    由於是使用了異或操作,所以解密將非常簡單,只要使用同樣的金鑰組密文
再次進行異或操作就能夠解密了。
    在上面介紹的基礎上,你可以少加改動,就可以使用同樣的方法加密一個檔案。
唯一需要注意的是,對於一個二進位檔案,你需要做一些完整性檢查以保證轉換回來
的字元不要越界。
    現在你需要做的就是把密鑰儲存在伺服器上的一個安全的地方(不能夠被外部存取)
附註:
    Vernam密碼是由Gilbert Vernam (他是AT&T的工程師)在1918年發明的。
這是一種使用異或方法進行加密解密的方法。



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.