ASP
Here you can find some FREE usefull Classic ASP / VBScript code snippets, class modules, etc.
Class SHA1
This is a SHA-1 encrypting class. I cannot take credit for this as I'm not the author. But I honestly don't remember where did I get this from, so, I cannot credit anyone else.
Methods
SecureHash (string_to_encrypt) Method
Encrypt a String using the SHA-1 algorithm. Returns the encrypted String.
Example
<% dim sh, my_string,ms_encrypted my_string = "This is my String! Take good care of it!" set sh = new SHA1 ms_encrypted=sh.SecureHash(my_string) response.write "Original string: " & my_string & "<br>" response.write "Encrypted string: " & ms_encrypted & "<br>" set sh = nothing %> Source Code <%
Class SHA1 Private Function AndW(ByRef pBytWord1Ary, ByRef pBytWord2Ary) Dim lBytWordAry(3),lLngIndex For lLngIndex = 0 To 3: lBytWordAry(lLngIndex) = CByte(pBytWord1Ary(lLngIndex) And pBytWord2Ary(lLngIndex)): Next AndW = lBytWordAry End Function Private Function OrW(ByRef pBytWord1Ary, ByRef pBytWord2Ary) Dim lBytWordAry(3),lLngIndex For lLngIndex = 0 To 3: lBytWordAry(lLngIndex) = CByte(pBytWord1Ary(lLngIndex) Or pBytWord2Ary(lLngIndex)): Next OrW = lBytWordAry End Function Private Function XorW(ByRef pBytWord1Ary, ByRef pBytWord2Ary) Dim lBytWordAry(3),lLngIndex For lLngIndex = 0 To 3: lBytWordAry(lLngIndex) = CByte(pBytWord1Ary(lLngIndex) Xor pBytWord2Ary(lLngIndex)): Next XorW = lBytWordAry End Function Private Function NotW(ByRef pBytWordAry) Dim lBytWordAry(3),lLngIndex For lLngIndex = 0 To 3: lBytWordAry(lLngIndex) = Not CByte(pBytWordAry(lLngIndex)): Next NotW = lBytWordAry End Function Private Function AddW(ByRef pBytWord1Ary, ByRef pBytWord2Ary) Dim lLngIndex,lIntTotal,lBytWordAry(3) For lLngIndex = 3 To 0 Step -1 If lLngIndex = 3 Then lIntTotal = CInt(pBytWord1Ary(lLngIndex)) + pBytWord2Ary(lLngIndex): lBytWordAry(lLngIndex) = lIntTotal Mod 256 Else lIntTotal = CInt(pBytWord1Ary(lLngIndex)) + pBytWord2Ary(lLngIndex) + (lIntTotal \ 256): lBytWordAry(lLngIndex) = lIntTotal Mod 256 End If Next AddW = lBytWordAry End Function Private Function CircShiftLeftW(ByRef pBytWordAry, ByRef pLngShift) Dim lDbl1,lDbl2 lDbl1 = WordToDouble(pBytWordAry): lDbl2 = lDbl1: lDbl1 = CDbl(lDbl1 * (2 ^ pLngShift)) lDbl2 = CDbl(lDbl2 / (2 ^ (32 - pLngShift))): CircShiftLeftW = OrW(DoubleToWord(lDbl1), DoubleToWord(lDbl2)) End Function Private Function WordToHex(ByRef pBytWordAry) Dim lLngIndex For lLngIndex = 0 To 3: WordToHex = WordToHex & Right("0" & Hex(pBytWordAry(lLngIndex)), 2): Next End Function Private Function HexToWord(ByRef pStrHex) HexToWord = DoubleToWord(CDbl("&h" & pStrHex)) ' needs "#" at end for VB? End Function Private Function DoubleToWord(ByRef pDblValue) Dim lBytWordAry(3) lBytWordAry(0) = Int(DMod(pDblValue, 2 ^ 32) / (2 ^ 24)): lBytWordAry(1) = Int(DMod(pDblValue, 2 ^ 24) / (2 ^ 16)) lBytWordAry(2) = Int(DMod(pDblValue, 2 ^ 16) / (2 ^ 8)): lBytWordAry(3) = Int(DMod(pDblValue, 2 ^ 8)): DoubleToWord = lBytWordAry End Function Private Function WordToDouble(ByRef pBytWordAry) WordToDouble = CDbl((pBytWordAry(0) * (2 ^ 24)) + (pBytWordAry(1) * (2 ^ 16)) + (pBytWordAry(2) * (2 ^ 8)) + pBytWordAry(3)) End Function Private Function DMod(ByRef pDblValue, ByRef pDblDivisor) Dim lDblMod lDblMod = CDbl(CDbl(pDblValue) - (Int(CDbl(pDblValue) / CDbl(pDblDivisor)) * CDbl(pDblDivisor))) If lDblMod < 0 Then lDblMod = CDbl(lDblMod + pDblDivisor) DMod = lDblMod End Function Private Function F(ByRef lIntT,ByRef pBytWordBAry,ByRef pBytWordCAry,ByRef pBytWordDAry) If lIntT <= 19 Then F = OrW(AndW(pBytWordBAry, pBytWordCAry), AndW((NotW(pBytWordBAry)), pBytWordDAry)) ElseIf lIntT <= 39 Then F = XorW(XorW(pBytWordBAry, pBytWordCAry), pBytWordDAry) ElseIf lIntT <= 59 Then F = OrW(OrW(AndW(pBytWordBAry, pBytWordCAry), AndW(pBytWordBAry, pBytWordDAry)), AndW(pBytWordCAry, pBytWordDAry)) Else F = XorW(XorW(pBytWordBAry, pBytWordCAry), pBytWordDAry) End If End Function Public Function SecureHash(ByVal pStrMessage) Dim lLngLen,lBytLenW, lStrPadMessage, lLngNumBlocks, lVarWordWAry(79), lLngTempWordWAry, lStrBlockText, lStrWordText, lLngBlock, lIntT, lBytTempAry Dim lVarWordKAry(3), lBytWordH0Ary, lBytWordH1Ary, lBytWordH2Ary, lBytWordH3Ary, lBytWordH4Ary, lBytWordAAry, lBytWordBAry, lBytWordCAry Dim lBytWordDAry,lBytWordEAry,lBytWordFAry lLngLen = Len(pStrMessage):lBytLenW = DoubleToWord(CDbl(lLngLen) * 8) lStrPadMessage = pStrMessage & Chr(128) & String((128 - (lLngLen Mod 64) - 9) Mod 64, Chr(0)) & _ String(4, Chr(0)) & Chr(lBytLenW(0)) & Chr(lBytLenW(1)) & Chr(lBytLenW(2)) & Chr(lBytLenW(3)) lLngNumBlocks = Len(lStrPadMessage) / 64: lVarWordKAry(0) = HexToWord("5A827999") lVarWordKAry(1) = HexToWord("6ED9EBA1"): lVarWordKAry(2) = HexToWord("8F1BBCDC") lVarWordKAry(3) = HexToWord("CA62C1D6"): lBytWordH0Ary = HexToWord("67452301") lBytWordH1Ary = HexToWord("EFCDAB89"): lBytWordH2Ary = HexToWord("98BADCFE") lBytWordH3Ary = HexToWord("10325476"): lBytWordH4Ary = HexToWord("C3D2E1F0") For lLngBlock = 0 To lLngNumBlocks - 1 lStrBlockText = Mid(lStrPadMessage, (lLngBlock * 64) + 1, 64) For lIntT = 0 To 15 lStrWordText = Mid(lStrBlockText, (lIntT * 4) + 1, 4) lVarWordWAry(lIntT) = Array(Asc(Mid(lStrWordText, 1, 1)), Asc(Mid(lStrWordText, 2, 1)), Asc(Mid(lStrWordText, 3, 1)), Asc(Mid(lStrWordText, 4, 1))) Next For lIntT = 16 To 79 lVarWordWAry(lIntT) = CircShiftLeftW(XorW(XorW(XorW(lVarWordWAry(lIntT - 3), lVarWordWAry(lIntT - 8)), lVarWordWAry(lIntT - 14)), lVarWordWAry(lIntT - 16)), 1) Next lBytWordAAry = lBytWordH0Ary: lBytWordBAry = lBytWordH1Ary: lBytWordCAry = lBytWordH2Ary lBytWordDAry = lBytWordH3Ary: lBytWordEAry = lBytWordH4Ary For lIntT = 0 To 79 lBytWordFAry = F(lIntT, lBytWordBAry,lBytWordCAry, lBytWordDAry) lBytTempAry = AddW(AddW(AddW(AddW(CircShiftLeftW(lBytWordAAry, 5), lBytWordFAry), lBytWordEAry), lVarWordWAry(lIntT)), lVarWordKAry(lIntT \ 20)) lBytWordEAry = lBytWordDAry: lBytWordDAry = lBytWordCAry: lBytWordCAry = CircShiftLeftW(lBytWordBAry, 30) lBytWordBAry = lBytWordAAry: lBytWordAAry = lBytTempAry Next lBytWordH0Ary = AddW(lBytWordH0Ary, lBytWordAAry): lBytWordH1Ary = AddW(lBytWordH1Ary, lBytWordBAry) lBytWordH2Ary = AddW(lBytWordH2Ary, lBytWordCAry): lBytWordH3Ary = AddW(lBytWordH3Ary, lBytWordDAry) lBytWordH4Ary = AddW(lBytWordH4Ary, lBytWordEAry) Next SecureHash = WordToHex(lBytWordH0Ary) & WordToHex(lBytWordH1Ary) & WordToHex(lBytWordH2Ary) & WordToHex(lBytWordH3Ary) & WordToHex(lBytWordH4Ary) End Function End Class %> |