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<
