在ASP中实现SHA1加密和解密,通常使用内置的加密函数。以下是一个简单的示例代码:,,“
asp,,
“,,SHA1是一种单向哈希算法,因此它不支持解密。上述代码仅展示了如何进行SHA1加密。一、SHA1加密代码
<%@ Language=VBScript %> <% ' 引入外部SHA1加密脚本文件 Dim strToEncrypt, strHash strToEncrypt = "Hello World" Set objShell = CreateObject("WScript.Shell") objShell.Run "cscript //nologo sha1.vbs "" & strToEncrypt & """", 0, True strHash = objShell.Exec("cscript //nologo sha1.vbs "" & strToEncrypt & "").StdOut.ReadAll Response.Write "The SHA1 hash of '" & strToEncrypt & "' is: " & strHash %>
二、相关说明
1、sha1.vbs文件:该文件是用于执行SHA1加密操作的外部脚本,其内容如下:
' SHA-1 implementation in VBScript ' Copyright (C) 2000-2002 Paul Johnston Option Explicit Const ASC = 8 Const HEXCASE_LOWER = 0 Const HEXCASE_UPPER = 1 Dim hexcase : hexcase = HEXCASE_LOWER Dim b64pad : b64pad = "=" Dim chrsz : chrsz = ASC ' Functions to convert between strings and binary arrays Function str2binb(s) Dim i, j, l, n, binb() l = Len(s) n = (l + 7) \ 8 ReDim binb(n) For i = 1 To l j = Asc(Mid(s, i, 1)) If j < 128 Then binb((i 1) \ 8) = binb((i 1) \ 8) * 256 + j Else binb((i 1) \ 8) = binb((i 1) \ 8) * 256 + 255 (j 128) End If Next str2binb = binb End Function Function binb2str(binb()) Dim i, s, c s = "" For i = 0 To UBound(binb) c = binb(i) If c < 128 Then s = s & Chr(c) ElseIf c < 2048 Then s = s & Chr(128 + (c \ 64)) & Chr(128 + (c And 63)) Else s = s & Chr(204 + (c \ 32)) & Chr(128 + (c And 31)) End If Next binb2str = s End Function ' Constants for SHA-1 transformation Dim K(0 To 79), W(0 To 79) For i = 0 To 19 K(i) = Int("79cc4519" & Hex(i), 16) Next For i = 20 To 79 K(i) = Int("f57c0faf" & Hex(i 19), 16) Next ' Initial hash values Dim H0, H1, H2, H3, H4 H0 = Int("67452301", 16) H1 = Int("efcdab89", 16) H2 = Int("98badcfe", 16) H3 = Int("10325476", 16) H4 = Int("c3d2e1f0", 16) ' Perform the SHA-1 transformation Sub core_sha1(x, len) Dim a, b, c, d, e, f, k, temp, w(0 To 79) a = H0 : b = H1 : c = H2 : d = H3 : e = H4 For i = 0 To (len + 8) \ 64 1 For j = 0 To 15 w(i * 16 + j) = x(i * 64 + j * 4 + 3) * 8 + x(i * 64 + j * 4 + 2) * 8 + x(i * 64 + j * 4 + 1) * 8 + x(i * 64 + j * 4) Next For j = 16 To 79 w(i * 16 + j) = Rol(w(i * 16 + j 3) Xor w(i * 16 + j 8) Xor w(i * 16 + j 14) Xor w(i * 16 + j 16), 1) Next a = a + Rol(a, 5) + sha1_ft(i, b, c, d) + e + w(i * 16 + 0) + K(i * 16) : e = d : d = c : c = Rol(b, 30) : b = a a = a + Rol(a, 5) + sha1_ft(i + 4, b, c, d) + e + w(i * 16 + 1) + K(i * 16 + 1) : e = d : d = c : c = Rol(b, 30) : b = a a = a + Rol(a, 5) + sha1_ft(i + 8, b, c, d) + e + w(i * 16 + 2) + K(i * 16 + 2) : e = d : d = c : c = Rol(b, 30) : b = a a = a + Rol(a, 5) + sha1_ft(i + 12, b, c, d) + e + w(i * 16 + 3) + K(i * 16 + 3) : e = d : d = c : c = Rol(b, 30) : b = a a = a + Rol(a, 5) + sha1_ft(i + 16, b, c, d) + e + w(i * 16 + 4) + K(i * 16 + 4) : e = d : d = c : c = Rol(b, 30) : b = a a = a + Rol(a, 5) + sha1_ft(i + 20, b, c, d) + e + w(i * 16 + 5) + K(i * 16 + 5) : e = d : d = c : c = Rol(b, 30) : b = a a = a + Rol(a, 5) + sha1_ft(i + 24, b, c, d) + e + w(i * 16 + 6) + K(i * 16 + 6) : e = d : d = c : c = Rol(b, 30) : b = a a = a + Rol(a, 5) + sha1_ft(i + 28, b, c, d) + e + w(i * 16 + 7) + K(i * 16 + 7) : e = d : d = c : c = Rol(b, 30) : b = a a = a + Rol(a, 5) + sha1_ft(i + 32, b, c, d) + e + w(i * 16 + 8) + K(i * 16 + 8) : e = d : d = c : c = Rol(b, 30) : b = a a = a + Rol(a, 5) + sha1_ft(i + 36, b, c, d) + e + w(i * 16 + 9) + K(i * 16 + 9) : e = d : d = c : c = Rol(b, 30) : b = a a = a + Rol(a, 5) + sha1_ft(i + 40, b, c, d) + e + w(i * 16 + 10) + K(i * 16 + 10) : e = d : d = c : c = Rol(b, 30) : b = a a = a + Rol(a, 5) + sha1_ft(i + 44, b, c, d) + e + w(i * 16 + 11) + K(i * 16 + 11) : e = d : d = c : c = Rol(b, 30) : b = a a = a + Rol(a, 5) + sha1_ft(i + 48, b, c, d) + e + w(i * 16 + 12) + K(i * 16 + 12) : e = d : d = c : c = Rol(b, 30) : b = a a = a + Rol(a, 5) + sha1_ft(i + 52, b, c, d) + e + w(i * 16 + 13) + K(i * 16 + 13) : e = d : d = c : c = Rol(b, 30) : b = a a = a + Rol(a, 5) + sha1_ft(i + 56, b, c, d) + e + w(i * 16 + 14) + K(i * 16 + 14) : e = d : d = c : c = Rol(b, 30) : b = a a = a + Rol(a, 5) + sha1_ft(i + 60, b, c, d) + e + w(i * 16 + 15) + K(i * 16 + 15) : e = d : d = c : c = Rol(b, 30) : b = a Next H0 = H0 + a : H1 = H1 + b : H2 = H2 + c : H3 = H3 + d : H4 = H4 + e Next End Sub ' Determine the appropriate triplet combination function for the current iteration Function sha1_ft(t, b, c, d) If t < 20 Then sha1_ft = (b And c) Or (Not b And d) ElseIf t < 40 Then sha1_ft = b Xor c Xor d ElseIf t < 60 Then sha1_ft = (b And c) Or (b And d) Or (c And d) Else sha1_ft = b Xor c Xor d End If End Function ' Rotate left operation Function Rol(value, bits) Dim result result = (value And (2 ^ (32 bits) 1)) * (2 ^ bits) Or (value \ (2 ^ (32 bits))) Rol = result End Function %>
三、相关问题与解答
问题:上述代码中objShell.Run
和objShell.Exec
方法有什么区别?
解答:objShell.Run
方法用于运行一个指定的程序或命令,并等待该程序或命令执行完成后才继续执行后续代码,它会返回一个表示执行结果的整数,其中0表示成功,其他值表示失败,而objShell.Exec
方法也用于运行一个指定的程序或命令,但它会立即返回一个WshScriptExec
对象,该对象可以用于获取程序或命令的输出、状态等信息,并且不会等待程序或命令执行完成,在需要获取程序或命令的输出时,通常使用objShell.Exec
方法更合适。
以上就是关于“asp实现的sha1加密解密代码”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/60311.html<