Dalam berbagai sistem login, enkripsi kata sandi pengguna md5 sangat diperlukan.
Mari kita begini, bahkan jika Anda melihat kata sandi login pengguna melalui berbagai cara, Anda tidak dapat mengetahui apa itu karena serangkaian hal aneh itu.
Operasi enkripsi md5 tidak dapat diubah, yang berarti Anda tidak dapat menghitung tampilan aslinya melalui rangkaian hal-hal aneh tersebut.
Berikut kode md5 lengkapnya. Belum ngerti algoritmanya. Panggil saja langsung saat dibutuhkan.
Const Pribadi BITS_TO_A_BYTE = 8 Const Pribadi BYTES_TO_A_WORD = 4 Const Pribadi BITS_TO_A_WORD = 32 m_lOnBits(30) Pribadi m_l2Power(30) Fungsi Pribadi LShift(lValue, iShiftBits)If iShiftBits = 0 ThenLSift = lValueExit FunctionElseIf iShiftbits = 31 lalu lvalue dan 1 lalu lift = & h80000000elselshift = 0End ifexit functionelSeif isHiftbits <0 atau isHiftbits> 31 ThenRerr.Raise 6end if if (lvalue dan m_l2power (31 - isHiftbits) kemudian (lvalue dan m_l2power (31 - iShiftbits)) kemudian (lvalue dan m_l2power (3 31 - iShiftBits)) kemudian (lvalue dan m_l2power (lValue dan m_ (lvalue dan m_lone (lvalue dan m_l2power)) - (iShiftBits + 1))) * m_l2Power(iShiftBits)) Atau &H80000000ElseLShift = ((lValue Dan m_lOnBits(31 - iShiftBits)) * m_l2Power(iShiftBits))End IfEnd Function Fungsi Pribadi RShift(lValue, iShiftBits)If iShiftBits = 0 ThenRShift = Jika (lValue Dan &H80000000) ThenRShift = (RShift Atau (&H40000000 / m_l2Power(iShiftBits - 1)))End IfEnd Function Fungsi Pribadi RotateLeft(lValue, iShiftBits)RotateLeft = LShift(lValue, iShiftBits) Atau RShift(lValue, (32 - iShiftBits) )Akhir Fungsi Pribadi AddUnsigned(lX, lY)Dim lX4Dim lY4Dim lX8Dim lY8Dim lResult lX8 = lX And &H80000000lY8 = lY And &H80000000lX4 = lX And &H40000000lY4 = lY And &H40000000 lResult = (lX Dan &H3FFFFFF) + (lY Dan &H3FFFFFFF) Jika lX4 Dan lY4 MakalHasil = lHasil Xor &H80000000 Xor lX8 Xor lY8ElseIf lX4 Atau lY4 MakaJika lHasil Dan &H40000000 MakalHasil = lHasil lX8 Xor lY8ElselResult = lHasil Xor &H40000000 Xor lX8 Xor lY8End IfElselResult = lHasil z)Fungsi Akhir Fungsi Pribadi md5_G(x, y, z)md5_G = (x Dan z) Atau (y Dan (Bukan z))Fungsi Akhir Fungsi Pribadi md5_H(x, y, z)md5_H = (x Xatau y Xor z )Fungsi Akhir Fungsi Pribadi md5_I(x, y, z)md5_I = (y Xor (x Atau (Bukan z)))Sub Pribadi Fungsi Akhir md5_FF(a, b, c, d, x, s, ac)a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_F(b, c, d), x), ac))a = RotateLeft(a, s)a = TambahkanUnsigned(a, b)Akhir Sub Sub Pribadi md5_GG(a, b, c, d, x, s, ac)a = AddUnsigned(a, AddUnsigned(AddUnsigned(md5_G(b, c, d), x), ac))a = RotateLeft(a, s)a = AddUnsigned(a, b)Akhir Sub Sub Pribadi md5_HH(a, b, c , d, x, s, ac)a = TambahkanUnsigned(a, AddUnsigned(AddUnsigned(md5_H(b, c, d), x), ac))a = RotateLeft(a, s)a = AddUnsigned(a, b)End Sub Private Sub md5_II(a, b, c, d, x, s, ac)a = AddUnsigned (a, AddUnsigned(AddUnsigned(md5_I(b, c, d), x), ac))a = RotateLeft(a, s)a = AddUnsigned(a, b)End Sub Fungsi Pribadi ConvertToWordArray(sMessage)Dim lMessageLengthDim lNumberOfWordsDim lWordArray()Dim lBytePositionDim lByteCountDim lWordCount Const MODULUS_BITS = 512Const CONGRUENT_BITS = 448 lMessageLength = Len(sMessage) lNumberOfWords = (((lPanjang Pesan + ((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 = 0lByteCo tidak = 0Lakukan Hingga lByteCount >= lMessageLengthlWordCount = lByteCount / BYTES_TO_A_WORDlBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTElWordArray(lWordCount) = lWordArray(lWordCount) Atau LShift(Asc( Pertengahan (sMessage, lByteCount + 1, 1)), lBytePosition)lByteCount = lByteCount + 1Loop lWordCount = lByteCount / BYTES_TO_A_WORDlBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE lWordArray(lWordCount) = lWordArray(lWordCount) Atau LShift (&H80, lPosisi Byte) lWordArray(lNumberOfWords - 2) = LShift(lMessageLength, 3)lWordArray(lNumberOfWords - 1) = RShift(lMessageLength, 29) ConvertToWordArray = lWordArrayEnd Fungsi Fungsi Pribadi WordToHex(lValue)Dim lByteDim lCount Untuk lCount = 0 Ke 3lByte = RSift(lNilai, lHitung* BITS_TO_A_BYTE) Dan m_lOnBits(BITS_TO_A_BYTE - 1)WordToHex = WordToHex & Right("0" & Hex(lByte), 2)Fungsi NextEnd Fungsi Publik MD5(sMessage, stype)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_l2Daya(3) = CLng(8)m_l2Daya(4) = CLng(16)m_l2Daya(5) = CLng(32)m_l2Daya(6) = CLng(64)m_l2Daya(7) = CLng(128)m_l2Daya (8) = CLng(256)m_l2Daya(9) = CLng(512)m_l2Daya(10) = CLng(1024)m_l2Daya(11) = CLng(2048)m_l2Daya(12) = CLng(4096)m_l2Daya(13) = CLng(8192)m_l2Daya(14) = CLng(16384)m_l2Daya (15) = CLng(32768)m_l2Daya(16) = CLng(65536)m_l2Daya(17) = CLng(131072)m_l2Daya(18) = CLng(262144)m_l2Daya(19) = CLng(524288)m_l2Daya(20) = CLng(1048576)m_l2Daya(21) = CLng(2097152)m_l2Daya(22) = CLng(4194304)m_l2Daya(23) = CLng(8388608)m_l2Daya(24) = CLng(16777216)m_l2Daya(25) = CLng(33554432)m_l2Daya(26) = CLng(67108864)m_l2Daya(27) = CLng(134217728)m_l2Daya(28) = CLng(268435456)m_l2Daya(29) = CLng(536870912)m_l2Daya(30) = CLng(1073741824) Redup S31 = 4Const S32 = 11Const S33 = 16Const S34 = 23Const S41 = 6Const S42 = 10Const S43 = 15Const S44 = 21 x = ConvertToWordArray(sMessage) a = &H67452301b = &HEFCDAB89c = &H98BADCFEd = &H10325476 Untuk k = 0 Ke UBound(x) Langkah 16AA = aBB = bCC = cDD = d md5_FF a, b, c, d, x(k + 0), S11, &HD76AA478md5_FF d, a, b, c, x(k + 1), S12, &HE8C7B756md5_FF c, d, a, b, x(k + 2), S13, &H242070DBmd5_FF b, c, d, a, x(k + 3), S14, &HC1BDCEEEmd5_FF a, b, c, d, x(k + 4), S11, &HF57C0FAFmd5_FF d, a, b, c, x(k + 5), S12, &H4787C62Amd5_FF c, d, a, b, x(k + 6), S13, &HA8304613md5_FF b, c, d, a, x(k + 7), S14, &HFD469501md5_FF a, b, c, d, x(k + 8 ), S11, &H698098D8md5_FF d, a, b, c, x(k + 9), S12, &H8B44F7AFmd5_FF c, d, a, b, x(k + 10), S13, &HFFFF5BB1md5_FF b, c, d, a, x(k + 11 ), S14, &H895CD7BEmd5_FF a, b, c, d, x(k + 12), S11, &H6B901122md5_FF d, a, b, c, x(k + 13), S12, &HFD987193md5_FF c, d, a, b, x(k + 14 ), S13, &HA679438Emd5_FF b, c, d, a, x(k + 15), S14, &H49B40821 md5_GG a, b, c, d, x(k + 1), S21, &HF61E2562md5_GG d, a, b, c, x(k + 6), S22, &HC040B340md5_GG c, d, a, b, x(k + 11), S23, &H265E5A51md5_GG b, c, d, a, x(k + 0), S24, &HE9B6C7AAmd5_GG a, b, c, d, x(k + 5 ), S21, &HD62F105Dmd5_GG d, a, b, c, x(k + 10), S22, &H2441453md5_GG c, d, a, b, x(k + 15), S23, &HD8A1E681md5_GG b, c, d, a, x(k + 4 ), S24, &HE7D3FBC8md5_GG a, b, c, d, x(k + 9), S21, &H21E1CDE6md5_GG d, a, b, c, x(k + 14), S22, &HC33707D6md5_GG c, d, a, b, x(k + 3 ), S23, &HF4D50D87md5_GG b, c, d, a, x(k + 8), S24, &H455A14EDmd5_GG a, b, c, d, x(k + 13), S21, &HA9E3E905md5_GG d, a, b, c, x(k + 2 ), S22, &HFCEFA3F8md5_GG c, d, a, b, x(k + 7), S23, &H676F02D9md5_GG b, c, d, a, x(k + 12), S24, &H8D2A4C8A md5_HH a, b, c, d, x(k + 5 ), S31, &HFFFA3942md5_HH d, a, b, c, x(k + 8), S32, &H8771F681md5_HH c, d, a, b, x(k + 11), S33, &H6D9D6122md5_HH b, c, d, a, x(k + 14), S34, &HFDE5380Cmd5_HH a, b, c, d, x(k + 1), S31, &HA4BEEA44md5_HH d, a, b, c, x(k + 4), S32, &H4BDECFA9md5_HH c, d, a, b, x(k + 7), S33, &HF6BB4B60md5_HH b, c, d, a, x(k + 10), S34, &HBEBFBC70md5_HH a, b, c, d, x(k + 13), S31, &H289B7EC6md5_HH d, a, b, c, x(k + 0), S32, &HEAA127FAmd5_HH c, d, a, b, x(k + 3) , S33, &HD4EF3085md5_HH b, c, d, a, x(k + 6), S34, &H4881D05md5_HH a, b, c, d, x(k + 9), S31, &HD9D4D039md5_HH d, a, b, c, x(k + 12), S32, &HE6DB99E5md5_HH c, d, a, b, x(k+15), S33, &H1FA27CF8md5_HH b, c, d, a, x(k + 2), S34, &HC4AC5665 md5_II a, b, c, d, x(k + 0), S41, &HF4292244md5_II d, a, b, c, x(k + 7), S42, &H432AFF97md5_II c, d, a, b, x(k + 14), S43, &HAB9423A7md5_II b, c, d, a, x(k + 5), S44, &HFC93A039md5_II a, b, c, d, x(k + 12) , S41, &H655B59C3md5_II d, a, b, c, x(k + 3), S42, &H8F0CCC92md5_II c, d, a, b, x(k + 10), S43, &HFFEFF47Dmd5_II b, c, d, a, x(k + 1), S44, &H85845DD1md5_II a, b, c, d, x(k + 8), S41, &H6FA87E4Fmd5_II d, a, b, c, x(k + 15), S42, &HFE2CE6E0md5_II c, d, a, b, x(k + 6), S43, &HA3014314md5_II b, c, d, a, x(k + 13 ), S44, &H4E0811A1md5_II a, b, c, d, x(k + 4), S41, &HF7537E82md5_II d, a, b, c, x(k + 11), S42, &HBD3AF235md5_II c, d, a, b, x(k + 2 ), S43, &H2AD7D2BBmd5_II b, c, d, a, x(k + 9), S44, &HEB86D391 a = TambahUnsigned(a, AA)b = TambahUnsigned(b, BB)c = TambahUnsigned(c, CC)d = TambahUnsigned(d, DD )Selanjutnya Jika stype = 32 ThenMD5 = LCase(WordToHex(a) & WordToHex(b) & WordToHex(c) & WordToHex(d))ElseMD5 = LCase(WordToHex(b) & WordToHex(c))End IfEnd FunctionSub test()MsgBox MD5("a", 16) 'MsgBox terenkripsi 16-bit MD5 ("a", 32) 'enkripsi 32-bitEnd Sub