Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

How to implement MD5 encryption algorithm by VBS

2025-04-01 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Development >

Share

Shulou(Shulou.com)06/03 Report--

This article mainly introduces VBS how to achieve MD5 encryption algorithm, has a certain reference value, interested friends can refer to, I hope you can learn a lot after reading this article, the following let Xiaobian take you to understand.

The code is as follows:

Private Const BITS_TO_A_BYTE = 8

Private Const BYTES_TO_A_WORD = 4

Private Const BITS_TO_A_WORD = 32

Private m_lOnBits (30)

Private m_l2Power (30)

M_lOnBits (0) = CLng (1)

M_lOnBits (1) = CLng (3)

M_lOnBits (2) = CLng (7)

M_lOnBits (3) = CLng (15)

M_lOnBits (4) = CLng (31)

M_lOnBits (5) = CLng (63)

M_lOnBits (6) = CLng (127)

M_lOnBits (7) = CLng (255)

M_lOnBits (8) = CLng (511)

M_lOnBits (9) = CLng (1023)

M_lOnBits (10) = CLng (2047)

M_lOnBits (11) = CLng (4095)

M_lOnBits (12) = CLng (8191)

M_lOnBits (13) = CLng (16383)

M_lOnBits (14) = CLng (32767)

M_lOnBits (15) = CLng (65535)

M_lOnBits (16) = CLng (131071)

M_lOnBits (17) = CLng (262143)

M_lOnBits (18) = CLng (524287)

M_lOnBits (19) = CLng (1048575)

M_lOnBits (20) = CLng (2097151)

M_lOnBits (21) = CLng (4194303)

M_lOnBits (22) = CLng (8388607)

M_lOnBits (23) = CLng (16777215)

M_lOnBits (24) = CLng (33554431)

M_lOnBits (25) = CLng (67108863)

M_lOnBits (26) = CLng (134217727)

M_lOnBits (27) = CLng (268435455)

M_lOnBits (28) = CLng (536870911)

M_lOnBits (29) = CLng (1073741823)

M_lOnBits (30) = CLng (2147483647)

M_l2Power (0) = CLng (1)

M_l2Power (1) = CLng (2)

M_l2Power (2) = CLng (4)

M_l2Power (3) = CLng (8)

M_l2Power (4) = CLng (16)

M_l2Power (5) = CLng (32)

M_l2Power (6) = CLng (64)

M_l2Power (7) = CLng (128)

M_l2Power (8) = CLng

M_l2Power (9) = CLng

M_l2Power (10) = CLng (1024)

M_l2Power (11) = CLng (2048)

M_l2Power (12) = CLng (4096)

M_l2Power (13) = CLng (8192)

M_l2Power (14) = CLng (16384)

M_l2Power (15) = CLng (32768)

M_l2Power (16) = CLng (65536)

M_l2Power (17) = CLng (131072)

M_l2Power (18) = CLng (262144)

M_l2Power (19) = CLng (524288)

M_l2Power (20) = CLng (1048576)

M_l2Power (21) = CLng (2097152)

M_l2Power (22) = CLng (4194304)

M_l2Power (23) = CLng (8388608)

M_l2Power (24) = CLng (16777216)

M_l2Power (25) = CLng (33554432)

M_l2Power (26) = CLng (67108864)

M_l2Power (27) = CLng (134217728)

M_l2Power (28) = CLng (268435456)

M_l2Power (29) = CLng (536870912)

M_l2Power (30) = CLng (1073741824)

A=inputbox ("Please enter password:")

Wscript.echo md5 (a)

Private Function LShift (lValue, iShiftBits)

If iShiftBits = 0 Then

LShift = lValue

Exit Function

ElseIf iShiftBits = 31 Then

If lValue And 1 Then

LShift = & H80000000

Else

LShift = 0

End If

Exit Function

ElseIf iShiftBits

< 0 Or iShiftBits >

31 Then

Err.Raise 6

End If

If (lValue And m_l2Power (31-iShiftBits)) Then

LShift = ((lValue And m_lOnBits (31-(iShiftBits + 1) * m_l2Power (iShiftBits)) Or & H80000000

Else

LShift = ((lValue And m_lOnBits (31-iShiftBits)) * m_l2Power (iShiftBits))

End If

End Function

Private Function RShift (lValue, iShiftBits)

If iShiftBits = 0 Then

RShift = lValue

Exit Function

ElseIf iShiftBits = 31 Then

If lValue And & H80000000 Then

RShift = 1

Else

RShift = 0

End If

Exit Function

ElseIf iShiftBits

< 0 Or iShiftBits >

31 Then

Err.Raise 6

End If

RShift = (lValue And & H7FFFFFFE)\ m_l2Power (iShiftBits)

If (lValue And & H80000000) Then

RShift = (RShift Or (& H4000000\ m_l2Power (iShiftBits-1)

End If

End Function

Private Function RotateLeft (lValue, iShiftBits)

RotateLeft = LShift (lValue, iShiftBits) Or RShift (lValue, (32-iShiftBits))

End Function

Private Function AddUnsigned (lX, lY)

Dim lX4

Dim lY4

Dim lX8

Dim lY8

Dim lResult

LX8 = lX And & H80000000

LY8 = lY And & H80000000

LX4 = lX And & H4000000

LY4 = lY And & H4000000

LResult = (lX And & H3FFFFFFF) + (lY And & H3FFFFFFF)

If lX4 And lY4 Then

LResult = lResult Xor & H80000000 Xor lX8 Xor lY8

ElseIf lX4 Or lY4 Then

If lResult And & H4000000 Then

LResult = lResult Xor & HC0000000 Xor lX8 Xor lY8

Else

LResult = lResult Xor & H4000000 Xor lX8 Xor lY8

End If

Else

LResult = lResult Xor lX8 Xor lY8

End If

AddUnsigned = lResult

End Function

Private Function F (x, y, z)

F = (x And y) Or ((Not x) And z)

End Function

Private Function G (x, y, z)

G = (x And z) Or (y And (Not z))

End Function

Private Function H (x, y, z)

H = (x Xor y Xor z)

End Function

Private Function I (x, y, z)

I = (y Xor (x Or (Not z)

End Function

Private Sub FF (a, b, c, d, x, s, ac)

A = AddUnsigned (a, AddUnsigned (AddUnsigned (F (b, c, d), x), ac))

A = RotateLeft (a, s)

A = AddUnsigned (a, b)

End Sub

Private Sub GG (a, b, c, d, x, s, ac)

A = AddUnsigned (a, AddUnsigned (AddUnsigned (G (b, c, d), x), ac))

A = RotateLeft (a, s)

A = AddUnsigned (a, b)

End Sub

Private Sub HH (a, b, c, d, x, s, ac)

A = AddUnsigned (a, AddUnsigned (AddUnsigned (H (b, c, d), x), ac))

A = RotateLeft (a, s)

A = AddUnsigned (a, b)

End Sub

Private Sub II (a, b, c, d, x, s, ac)

A = AddUnsigned (a, AddUnsigned (AddUnsigned (I (b, c, d), x), ac))

A = RotateLeft (a, s)

A = AddUnsigned (a, b)

End Sub

Private Function ConvertToWordArray (sMessage)

Dim lMessageLength

Dim lNumberOfWords

Dim lWordArray ()

Dim lBytePosition

Dim lByteCount

Dim lWordCount

Const MODULUS_BITS = 512

Const CONGRUENT_BITS = 448

LMessageLength = Len (sMessage)

LNumberOfWords = ((lMessageLength + ((MODULUS_BITS-CONGRUENT_BITS)\ BITS_TO_A_BYTE))\ (MODULUS_BITS\ BITS_TO_A_BYTE)) + 1) * (MODULUS_BITS\ BITS_TO_A_WORD)

ReDim lWordArray (lNumberOfWords-1)

LBytePosition = 0

LByteCount = 0

Do Until lByteCount > = lMessageLength

LWordCount = lByteCount\ BYTES_TO_A_WORD

LBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE

LWordArray (lWordCount) = lWordArray (lWordCount) Or LShift (Asc (Mid (sMessage, lByteCount + 1,1)), lBytePosition)

LByteCount = lByteCount + 1

Loop

LWordCount = lByteCount\ BYTES_TO_A_WORD

LBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE

LWordArray (lWordCount) = lWordArray (lWordCount) Or LShift (& H80, lBytePosition)

LWordArray (lNumberOfWords-2) = LShift (lMessageLength, 3)

LWordArray (lNumberOfWords-1) = RShift (lMessageLength, 29)

ConvertToWordArray = lWordArray

End Function

Private Function WordToHex (lValue)

Dim lByte

Dim lCount

For lCount = 0 To 3

LByte = RShift (lValue, lCount * BITS_TO_A_BYTE) And m_lOnBits (BITS_TO_A_BYTE-1)

WordToHex = WordToHex & Right ("0" & Hex (lByte), 2)

Next

End Function

Public Function MD5 (sMessage)

Dim x

Dim k

Dim AA

Dim BB

Dim CC

Dim DD

Dim a

Dim b

Dim c

Dim d

Const S11 = 7

Const S12 = 12

Const S13 = 17

Const S14 = 22

Const S21 = 5

Const S22 = 9

Const S23 = 14

Const S24 = 20

Const S31 = 4

Const S32 = 11

Const S33 = 16

Const S34 = 23

Const S41 = 6

Const S42 = 10

Const S43 = 15

Const S44 = 21

X = ConvertToWordArray (sMessage)

A = & H67452301

B = & HEFCDAB89

C = & H98BADCFE

D = & H10325476

For k = 0 To UBound (x) Step 16

AA = a

BB = b

CC = c

DD = d

FF a, b, c, d, x (k + 0), S11, & HD76AA478

FF d, a, b, c, x (k + 1), S12, & HE8C7B756

FF c, d, a, b, x (k + 2), S13, & H242070DB

FF b, c, d, a, x (k + 3), S14, & HC1BDCEEE

FF a, b, c, d, x (k + 4), S11, & HF57C0FAF

FF d, a, b, c, x (k + 5), S12, & H4787C62A

FF c, d, a, b, x (k + 6), S13, & HA8304613

FF b, c, d, a, x (k + 7), S14, & HFD469501

FF a, b, c, d, x (k + 8), S11, & H698098D8

FF d, a, b, c, x (k + 9), S12, & H8B44F7AF

FF c, d, a, b, x (k + 10), S13, & HFFFF5BB1

FF b, c, d, a, x (k + 11), S14, & H895CD7BE

FF a, b, c, d, x (k + 12), S11, & H6B901122

FF d, a, b, c, x (k + 13), S12, & HFD987193

FF c, d, a, b, x (k + 14), S13, & HA679438E

FF b, c, d, a, x (k + 15), S14, & H49B40821

GG a, b, c, d, x (k + 1), S21, & HF61E2562

GG d, a, b, c, x (k + 6), S22, & HC040B340

GG c, d, a, b, x (k + 11), S23, & H265E5A51

GG b, c, d, a, x (k + 0), S24, & HE9B6C7AA

GG a, b, c, d, x (k + 5), S21, & HD62F105D

GG d, a, b, c, x (k + 10), S22, & H2441453

GG c, d, a, b, x (k + 15), S23, & HD8A1E681

GG b, c, d, a, x (k + 4), S24, & HE7D3FBC8

GG a, b, c, d, x (k + 9), S21, & H21E1CDE6

GG d, a, b, c, x (k + 14), S22, & HC33707D6

GG c, d, a, b, x (k + 3), S23, & HF4D50D87

GG b, c, d, a, x (k + 8), S24, & H455A14ED

GG a, b, c, d, x (k + 13), S21, & HA9E3E905

GG d, a, b, c, x (k + 2), S22, & HFCEFA3F8

GG c, d, a, b, x (k + 7), S23, & H676F02D9

GG b, c, d, a, x (k + 12), S24, & H8D2A4C8A

HH a, b, c, d, x (k + 5), S31, & HFFFA3942

HH d, a, b, c, x (k + 8), S32, & H8771F681

HH c, d, a, b, x (k + 11), S33, & H6D9D6122

HH b, c, d, a, x (k + 14), S34, & HFDE5380C

HH a, b, c, d, x (k + 1), S31, & HA4BEEA44

HH d, a, b, c, x (k + 4), S32, & H4BDECFA9

HH c, d, a, b, x (k + 7), S33, & HF6BB4B60

HH b, c, d, a, x (k + 10), S34, & HBEBFBC70

HH a, b, c, d, x (k + 13), S31, & H289B7EC6

HH d, a, b, c, x (k + 0), S32, & HEAA127FA

HH c, d, a, b, x (k + 3), S33, & HD4EF3085

HH b, c, d, a, x (k + 6), S34, & H4881D05

HH a, b, c, d, x (k + 9), S31, & HD9D4D039

HH d, a, b, c, x (k + 12), S32, & HE6DB99E5

HH c, d, a, b, x (k + 15), S33, & H1FA27CF8

HH b, c, d, a, x (k + 2), S34, & HC4AC5665

II a, b, c, d, x (k + 0), S41, & HF4292244

II d, a, b, c, x (k + 7), S42, & H432AFF97

II c, d, a, b, x (k + 14), S43, & HAB9423A7

II b, c, d, a, x (k + 5), S44, & HFC93A039

II a, b, c, d, x (k + 12), S41, & H655B59C3

II d, a, b, c, x (k + 3), S42, & H8F0CCC92

II c, d, a, b, x (k + 10), S43, & HFFEFF47D

II b, c, d, a, x (k + 1), S44, & H85845DD1

II a, b, c, d, x (k + 8), S41, & H6FA87E4F

II d, a, b, c, x (k + 15), S42, & HFE2CE6E0

II c, d, a, b, x (k + 6), S43, & HA3014314

II b, c, d, a, x (k + 13), S44, & H4E0811A1

II a, b, c, d, x (k + 4), S41, & HF7537E82

II d, a, b, c, x (k + 11), S42, & HBD3AF235

II c, d, a, b, x (k + 2), S43, & H2AD7D2BB

II b, c, d, a, x (k + 9), S44, & HEB86D391

A = AddUnsigned (a, AA)

B = AddUnsigned (b, BB)

C = AddUnsigned (c, CC)

D = AddUnsigned (d, DD)

Next

MD5 = LCase (WordToHex (a) & WordToHex (b) & WordToHex (c) & WordToHex (d))

End Function

Thank you for reading this article carefully. I hope the article "how to achieve MD5 encryption algorithm in VBS" shared by the editor will be helpful to everyone. At the same time, I also hope that you will support and pay attention to the industry information channel. More related knowledge is waiting for you to learn!

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Development

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report