Burada da bir sha1 hash fonksiyonu var.
Kod:
169 Function sha1_Hash(pStrMessage)
170 Dim lLngLen, lBytLenW, lLngTempWordWAry, lLngNumBlocks, lLngBlock, lIntT, lBytTempAry
171 Dim lVarWordWAry(79), lVarWordKAry(3)
172 Dim lStrBlockText, lStrWordText, lStrPadMessage
173 Dim lBytWordH0Ary, lBytWordH1Ary, lBytWordH2Ary, lBytWordH3Ary, lBytWordH4Ary
174 Dim lBytWordAAry, lBytWordBAry, lBytWordCAry, lBytWordDAry, lBytWordEAry, lBytWordFAry
175
176 lLngLen = Len(cstr(pStrMessage))
177
178 lBytLenW = DoubleToWord(CDbl(lLngLen) * 8)
179 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))
180 lLngNumBlocks = Len(lStrPadMessage) / 64
181
182 lVarWordKAry(0) = HexToWord("5A827999")
183 lVarWordKAry(1) = HexToWord("6ED9EBA1")
184 lVarWordKAry(2) = HexToWord("8F1BBCDC")
185 lVarWordKAry(3) = HexToWord("CA62C1D6")
186 lBytWordH0Ary = HexToWord("67452301")
187 lBytWordH1Ary = HexToWord("EFCDAB89")
188 lBytWordH2Ary = HexToWord("98BADCFE")
189 lBytWordH3Ary = HexToWord("10325476")
190 lBytWordH4Ary = HexToWord("C3D2E1F0")
191
192 For lLngBlock = 0 To lLngNumBlocks - 1
193
194 lStrBlockText = Mid(lStrPadMessage, (lLngBlock * 64) + 1, 64)
195
196 For lIntT = 0 To 15
197
198 lStrWordText = Mid(lStrBlockText, (lIntT * 4) + 1, 4)
199 lVarWordWAry(lIntT) = Array(Asc(Mid(lStrWordText, 1, 1)), Asc(Mid(lStrWordText, 2, 1)), Asc(Mid(lStrWordText, 3, 1)), Asc(Mid(lStrWordText, 4, 1)))
200
201 Next
202
203 For lIntT = 16 To 79
204
205 lVarWordWAry(lIntT) = CircShiftLeftW(XorW(XorW(XorW(lVarWordWAry(lIntT - 3), lVarWordWAry(lIntT - 8)), lVarWordWAry(lIntT - 14)), lVarWordWAry(lIntT - 16)), 1)
206
207 Next
208
209 lBytWordAAry = lBytWordH0Ary
210 lBytWordBAry = lBytWordH1Ary
211 lBytWordCAry = lBytWordH2Ary
212 lBytWordDAry = lBytWordH3Ary
213 lBytWordEAry = lBytWordH4Ary
214
215 For lIntT = 0 To 79
216
217 lBytWordFAry = F(lIntT, lBytWordBAry, lBytWordCAry, lBytWordDAry)
218 lBytTempAry = AddW(AddW(AddW(AddW(CircShiftLeftW(lBytWordAAry, 5), lBytWordFAry), lBytWordEAry), lVarWordWAry(lIntT)), lVarWordKAry(lIntT \ 20))
219 lBytWordEAry = lBytWordDAry
220 lBytWordDAry = lBytWordCAry
221 lBytWordCAry = CircShiftLeftW(lBytWordBAry, 30)
222 lBytWordBAry = lBytWordAAry
223 lBytWordAAry = lBytTempAry
224
225 Next
226
227 lBytWordH0Ary = AddW(lBytWordH0Ary, lBytWordAAry)
228 lBytWordH1Ary = AddW(lBytWordH1Ary, lBytWordBAry)
229 lBytWordH2Ary = AddW(lBytWordH2Ary, lBytWordCAry)
230 lBytWordH3Ary = AddW(lBytWordH3Ary, lBytWordDAry)
231 lBytWordH4Ary = AddW(lBytWordH4Ary, lBytWordEAry)
232
233 Next
234
235 sha1_Hash = WordToHex(lBytWordH0Ary) & WordToHex(lBytWordH1Ary) & WordToHex(lBytWordH2Ary) & WordToHex(lBytWordH3Ary) & WordToHex(lBytWordH4Ary)
236
237 End Function
Kolay Gelsin.