Teknologi enkripsi ganda MD5 dan SHA256 ASP memperoleh jenis enkripsi berdasarkan string. Ini adalah enkripsi campuran dan tidak ada harapan untuk mendapatkan keuntungan besar! Portabel untuk C#/C/C++, ASP.NET, VB.NET Atau jenis bahasa lain yang tersedia saat ini: Algoritma MD5, Algoritma SHA256, MD5 dulu lalu SHA256, dulu SHA256 lalu MD5, dua kali MD5, dua kali SHA256, 8 bit pertama algoritma MD5 dan kemudian 8 bit algoritma SHA256, 8 bit pertama algoritma SHA256 Algoritma MD5 8-bit terakhir, mengambil nilai AscW dari karakter terakhir kata sandi dan sisa 8 sebagai koefisien skema enkripsi, enkripsi MD5 16-bit, Enkripsi MD5 32-bit, enkripsi SHA256 8-bit, enkripsi SHA256 16-bit, enkripsi SHA256 24-bit, enkripsi SHA256 32-bit, enkripsi SHA256 40-bit, SHA 48-bit Enkripsi 256, enkripsi SHA256 56-bit, enkripsi SHA256 64-bit, dan algoritma lainnya. Setelah membaca kode sumber, Anda dapat menyesuaikan lebih banyak kombinasi enkripsi dan algoritma enkripsi. Ucapkan selamat tinggal pada cracking brute-force dari algoritma MD5~~
kode sumber cls_Encrypt.asp:
Copy kode kodenya sebagai berikut:
<%
Konst Pribadi BITS_TO_A_BYTE = 8
Konst Pribadi BYTES_TO_A_WORD = 4
Konst Pribadi BITS_TO_A_WORD = 32
Kelas Cls_Encrypt
MD5_m_lOnBits Pribadi(30)
MD5_m_l2Kekuatan Pribadi(30)
SHA256_m_lOnBits(30) Pribadi
SHA256_m_l2Kekuatan Pribadi(30)
SHA256_K(63) Pribadi
Sub Kelas Pribadi_Inisialisasi
MD5_m_lOnBits(0) = CLng(1)
MD5_m_lOnBits(1) = CLng(3)
MD5_m_lOnBits(2) = CLng(7)
MD5_m_lOnBits(3) = CLng(15)
MD5_m_lOnBits(4) = CLng(31)
MD5_m_lOnBits(5) = CLng(63)
MD5_m_lOnBits(6) = CLng(127)
MD5_m_lOnBits(7) = CLng(255)
MD5_m_lOnBits(8) = CLng(511)
MD5_m_lOnBits(9) = CLng(1023)
MD5_m_lOnBits(10) = CLng(2047)
MD5_m_lOnBits(11) = CLng(4095)
MD5_m_lOnBits(12) = CLng(8191)
MD5_m_lOnBits(13) = CLng(16383)
MD5_m_lOnBits(14) = CLng(32767)
MD5_m_lOnBits(15) = CLng(65535)
MD5_m_lOnBits(16) = CLng(131071)
MD5_m_lOnBits(17) = CLng(262143)
MD5_m_lOnBits(18) = CLng(524287)
MD5_m_lOnBits(19) = CLng(1048575)
MD5_m_lOnBits(20) = CLng(2097151)
MD5_m_lOnBits(21) = CLng(4194303)
MD5_m_lOnBits(22) = CLng(8388607)
MD5_m_lOnBits(23) = CLng(16777215)
MD5_m_lOnBits(24) = CLng(33554431)
MD5_m_lOnBits(25) = CLng(67108863)
MD5_m_lOnBits(26) = CLng(134217727)
MD5_m_lOnBits(27) = CLng(268435455)
MD5_m_lOnBits(28) = CLng(536870911)
MD5_m_lOnBits(29) = CLng(1073741823)
MD5_m_lOnBits(30) = CLng(2147483647)
MD5_m_l2Kekuatan(0) = CLng(1)
MD5_m_l2Kekuatan(1) = CLng(2)
MD5_m_l2Kekuatan(2) = CLng(4)
MD5_m_l2Kekuatan(3) = CLng(8)
MD5_m_l2Kekuatan(4) = CLng(16)
MD5_m_l2Kekuatan(5) = CLng(32)
MD5_m_l2Kekuatan(6) = CLng(64)
MD5_m_l2Kekuatan(7) = CLng(128)
MD5_m_l2Kekuatan(8) = CLng(256)
MD5_m_l2Kekuatan(9) = CLng(512)
MD5_m_l2Kekuatan(10) = CLng(1024)
MD5_m_l2Kekuatan(11) = CLng(2048)
MD5_m_l2Kekuatan(12) = CLng(4096)
MD5_m_l2Kekuatan(13) = CLng(8192)
MD5_m_l2Kekuatan(14) = CLng(16384)
MD5_m_l2Kekuatan(15) = CLng(32768)
MD5_m_l2Kekuatan(16) = CLng(65536)
MD5_m_l2Kekuatan(17) = CLng(131072)
MD5_m_l2Kekuatan(18) = CLng(262144)
MD5_m_l2Kekuatan(19) = CLng(524288)
MD5_m_l2Kekuatan(20) = CLng(1048576)
MD5_m_l2Kekuatan(21) = CLng(2097152)
MD5_m_l2Kekuatan(22) = CLng(4194304)
MD5_m_l2Kekuatan(23) = CLng(8388608)
MD5_m_l2Kekuatan(24) = CLng(16777216)
MD5_m_l2Kekuatan(25) = CLng(33554432)
MD5_m_l2Kekuatan(26) = CLng(67108864)
MD5_m_l2Kekuatan(27) = CLng(134217728)
MD5_m_l2Kekuatan(28) = CLng(268435456)
MD5_m_l2Kekuatan(29) = CLng(536870912)
MD5_m_l2Kekuatan(30) = CLng(1073741824)
SHA256_m_lOnBits(0) = CLng(1)
SHA256_m_lOnBits(1) = CLng(3)
SHA256_m_lOnBits(2) = CLng(7)
SHA256_m_lOnBits(3) = CLng(15)
SHA256_m_lOnBits(4) = CLng(31)
SHA256_m_lOnBits(5) = CLng(63)
SHA256_m_lOnBits(6) = CLng(127)
SHA256_m_lOnBits(7) = CLng(255)
SHA256_m_lOnBits(8) = CLng(511)
SHA256_m_lOnBits(9) = CLng(1023)
SHA256_m_lOnBits(10) = CLng(2047)
SHA256_m_lOnBits(11) = CLng(4095)
SHA256_m_lOnBits(12) = CLng(8191)
SHA256_m_lOnBits(13) = CLng(16383)
SHA256_m_lOnBits(14) = CLng(32767)
SHA256_m_lOnBits(15) = CLng(65535)
SHA256_m_lOnBits(16) = CLng(131071)
SHA256_m_lOnBits(17) = CLng(262143)
SHA256_m_lOnBits(18) = CLng(524287)
SHA256_m_lOnBits(19) = CLng(1048575)
SHA256_m_lOnBits(20) = CLng(2097151)
SHA256_m_lOnBits(21) = CLng(4194303)
SHA256_m_lOnBits(22) = CLng(8388607)
SHA256_m_lOnBits(23) = CLng(16777215)
SHA256_m_lOnBits(24) = CLng(33554431)
SHA256_m_lOnBits(25) = CLng(67108863)
SHA256_m_lOnBits(26) = CLng(134217727)
SHA256_m_lOnBits(27) = CLng(268435455)
SHA256_m_lOnBits(28) = CLng(536870911)
SHA256_m_lOnBits(29) = CLng(1073741823)
SHA256_m_lOnBits(30) = CLng(2147483647)
SHA256_m_l2Daya(0) = CLng(1)
SHA256_m_l2Kekuatan(1) = CLng(2)
SHA256_m_l2Kekuatan(2) = CLng(4)
SHA256_m_l2Kekuatan(3) = CLng(8)
SHA256_m_l2Kekuatan(4) = CLng(16)
SHA256_m_l2Kekuatan(5) = CLng(32)
SHA256_m_l2Kekuatan(6) = CLng(64)
SHA256_m_l2Kekuatan(7) = CLng(128)
SHA256_m_l2Kekuatan(8) = CLng(256)
SHA256_m_l2Kekuatan(9) = CLng(512)
SHA256_m_l2Kekuatan(10) = CLng(1024)
SHA256_m_l2Kekuatan(11) = CLng(2048)
SHA256_m_l2Kekuatan(12) = CLng(4096)
SHA256_m_l2Kekuatan(13) = CLng(8192)
SHA256_m_l2Kekuatan(14) = CLng(16384)
SHA256_m_l2Kekuatan(15) = CLng(32768)
SHA256_m_l2Kekuatan(16) = CLng(65536)
SHA256_m_l2Kekuatan(17) = CLng(131072)
SHA256_m_l2Kekuatan(18) = CLng(262144)
SHA256_m_l2Kekuatan(19) = CLng(524288)
SHA256_m_l2Kekuatan(20) = CLng(1048576)
SHA256_m_l2Kekuatan(21) = CLng(2097152)
SHA256_m_l2Kekuatan(22) = CLng(4194304)
SHA256_m_l2Kekuatan(23) = CLng(8388608)
SHA256_m_l2Kekuatan(24) = CLng(16777216)
SHA256_m_l2Kekuatan(25) = CLng(33554432)
SHA256_m_l2Kekuatan(26) = CLng(67108864)
SHA256_m_l2Kekuatan(27) = CLng(134217728)
SHA256_m_l2Kekuatan(28) = CLng(268435456)
SHA256_m_l2Kekuatan(29) = CLng(536870912)
SHA256_m_l2Kekuatan(30) = CLng(1073741824)
SHA256_K(0) = &H428A2F98
SHA256_K(1) = &H71374491
SHA256_K(2) = &HB5C0FBCF
SHA256_K(3) = &HE9B5DBA5
SHA256_K(4) = &H3956C25B
SHA256_K(5) = &H59F111F1
SHA256_K(6) = &H923F82A4
SHA256_K(7) = &HAB1C5ED5
SHA256_K(8) = &HD807AA98
SHA256_K(9) = &H12835B01
SHA256_K(10) = &H243185BE
SHA256_K(11) = &H550C7DC3
SHA256_K(12) = &H72BE5D74
SHA256_K(13) = &H80DEB1FE
SHA256_K(14) = &H9BDC06A7
SHA256_K(15) = &HC19BF174
SHA256_K(16) = &HE49B69C1
SHA256_K(17) = &HEFBE4786
SHA256_K(18) = &HFC19DC6
SHA256_K(19) = &H240CA1CC
SHA256_K(20) = &H2DE92C6F
SHA256_K(21) = &H4A7484AA
SHA256_K(22) = &H5CB0A9DC
SHA256_K(23) = &H76F988DA
SHA256_K(24) = &H983E5152
SHA256_K(25) = &HA831C66D
SHA256_K(26) = &HB00327C8
SHA256_K(27) = &HBF597FC7
SHA256_K(28) = &HC6E00BF3
SHA256_K(29) = &HD5A79147
SHA256_K(30) = &H6CA6351
SHA256_K(31) = &H14292967
SHA256_K(32) = &H27B70A85
SHA256_K(33) = &H2E1B2138
SHA256_K(34) = &H4D2C6DFC
SHA256_K(35) = &H53380D13
SHA256_K(36) = &H650A7354
SHA256_K(37) = &H766A0ABB
SHA256_K(38) = &H81C2C92E
SHA256_K(39) = &H92722C85
SHA256_K(40) = &HA2BFE8A1
SHA256_K(41) = &HA81A664B
SHA256_K(42) = &HC24B8B70
SHA256_K(43) = &HC76C51A3
SHA256_K(44) = &HD192E819
SHA256_K(45) = &HD6990624
SHA256_K(46) = &HF40E3585
SHA256_K(47) = &H106AA070
SHA256_K(48) = &H19A4C116
SHA256_K(49) = &H1E376C08
SHA256_K(50) = &H2748774C
SHA256_K(51) = &H34B0BCB5
SHA256_K(52) = &H391C0CB3
SHA256_K(53) = &H4ED8AA4A
SHA256_K(54) = &H5B9CCA4F
SHA256_K(55) = &H682E6FF3
SHA256_K(56) = &H748F82EE
SHA256_K(57) = &H78A5636F
SHA256_K(58) = &H84C87814
SHA256_K(59) = &H8CC70208
SHA256_K(60) = &H90BEFFFA
SHA256_K(61) = &HA4506CEB
SHA256_K(62) = &HBEF9A3F7
SHA256_K(63) = &HC67178F2
Akhiri Sub
Sub Kelas Pribadi_Terminate
Akhiri Sub
'Fungsi array konversi transfer karakter
Fungsi Pribadi ConvertToWordArray (byVal sMessage)
Redupkan Panjang Pesan
Redupkan NumberOfWords
Redupkan lWordArray()
Redupkan lBytePosition
Redupkan lByteCount
Redupkan Jumlah Kata
Konstan MODULUS_BITS = 512
Konstanta CONGRUENT_BITS = 448
lPanjang Pesan = Len(sPesan)
lNumberOfWords = (((lMessageLength + ((MODULUS_BITS - CONGRUENT_BITS) / BITS_TO_A_BYTE)) / (MODULUS_BITS / BITS_TO_A_BYTE)) + 1) * (MODULUS_BITS / BITS_TO_A_WORD)
Redupkan kembali lWordArray(lNumberOfWords - 1)
lBytePosisi = 0
lByteHitungan = 0
Lakukan Hingga lByteCount >= lMessageLength
lWordCount = lByteCount / BYTES_TO_A_WORD
lBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE
lWordArray(lWordCount) = lWordArray(lWordCount) atau LShift(Asc(Mid(sMessage, lByteCount + 1, 1)), lBytePosition)
lByteCount = lByteCount + 1
Lingkaran
lWordCount = lByteCount / BYTES_TO_A_WORD
lBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE
lWordArray(lWordCount) = lWordArray(lWordCount) atau LShift(&H80, lBytePosition)
lWordArray(lNumberOfWords - 2) = LShift(lMessageLength, 3)
lWordArray(lNumberOfWords - 1) = RSift(lMessageLength, 29)
KonversiKeWordArray = lWordArray
Fungsi Akhir
'String fungsi utama bergeser ke kiri
Fungsi Pribadi LShift(byVal lValue, byVal iShiftBits)
Jika iShiftBits = 0 Maka
LShift = lNilai
Fungsi Keluar
ElseIf iShiftBits = 31 Lalu
Jika lNilai Dan 1 Lalu
LShift = &H80000000
Kalau tidak
Pergeseran L = 0
Akhiri Jika
Fungsi Keluar
ElseIf iShiftBits < 0 atau iShiftBits > 31 Lalu
Err.Naikkan 6
Akhiri Jika
Jika (lValue Dan MD5_m_l2Power(31 - iShiftBits)) Lalu
LShift = ((lValue Dan MD5_m_lOnBits(31 - (iShiftBits + 1))) * MD5_m_l2Power(iShiftBits)) atau &H80000000
Kalau tidak
LShift = ((lValue Dan MD5_m_lOnBits(31 - iShiftBits)) * MD5_m_l2Power(iShiftBits))
Akhiri Jika
Fungsi Akhir
'Fungsi utama string bergeser ke kanan
Fungsi Pribadi RShift(byVal lValue, byVal iShiftBits)
Jika iShiftBits = 0 Maka
RSshift = lNilai
Fungsi Keluar
ElseIf iShiftBits = 31 Lalu
Jika lNilai Dan &H80000000 Lalu
Pergeseran RS = 1
Kalau tidak
Pergeseran RS = 0
Akhiri Jika
Fungsi Keluar
ElseIf iShiftBits < 0 atau iShiftBits > 31 Lalu
Err.Naikkan 6
Akhiri Jika
RShift = (lNilai Dan &H7FFFFFFE) / MD5_m_l2Power(iShiftBits)
Jika (lNilai Dan &H80000000) Lalu
RShift = (RSshift atau (&H40000000 / MD5_m_l2Power(iShiftBits - 1)))
Akhiri Jika
Fungsi Akhir
'Konversi string offset, diimplementasikan melalui fungsi shift kiri dan kanan
Fungsi Pribadi RotateLeft(byVal lValue, byVal iShiftBits)
RotateLeft = LShift(lValue, iShiftBits) atau RShift(lValue, (32 - iShiftBits))
Fungsi Akhir
'Tambahkan pengkodean heksadesimal yang tidak ditandatangani
Fungsi Pribadi AddUnsigned(byVal lX, byVal lY)
x4
kamu4
x8
y8
Redupkan Hasil
lX8 = lX Dan &H80000000
lY8 = lY Dan &H80000000
lX4 = lX Dan &H40000000
lY4 = lY Dan &H40000000
lHasil = (lX Dan &H3FFFFFFFF) + (lY Dan &H3FFFFFFFF)
Jika lX4 Dan lY4 Lalu
lHasil = lHasil Xor &H80000000 Xor lX8 Xor lY8
LainJika lX4 atau lY4 Lalu
Jika lHasil Dan &H40000000 Lalu
lHasil = lHasil Xor &HC0000000 Xor lX8 Xor lY8
Kalau tidak
lHasil = lHasil Xor &H40000000 Xor lX8 Xor lY8
Akhiri Jika
Kalau tidak
lHasil = lHasil Xatau lX8 Xatau lY8
Akhiri Jika
AddUnsigned = lHasil
Fungsi Akhir
'Fungsi pengkodean utama MD5_FF,MD5_GG,MD5_HH,MD5_II MD5
Sub Pribadi MD5_FF(a, b, c, d, x, s, ac)
a = TambahkanUnsigned(a, AddUnsigned(AddUnsigned(MD5_F(b, c, d), x), ac))
a = Putar ke Kiri(a, s)
a = TambahkanTidak Ditandatangani(a, b)
Akhiri Sub
Sub Pribadi MD5_GG(a, b, c, d, x, s, ac)
a = TambahkanUnsigned(a, AddUnsigned(AddUnsigned(MD5_G(b, c, d), x), ac))
a = Putar ke Kiri(a, s)
a = TambahkanTidak Ditandatangani(a, b)
Akhiri Sub
Sub Pribadi MD5_HH(a, b, c, d, x, s, ac)
a = TambahUnsigned(a, TambahUnsigned(TambahkanUnsigned(MD5_H(b, c, d), x), ac))
a = Putar ke Kiri(a, s)
a = TambahkanTidak Ditandatangani(a, b)
Akhiri Sub
Sub Pribadi MD5_II(a, b, c, d, x, s, ac)
a = TambahkanUnsigned(a, AddUnsigned(AddUnsigned(MD5_I(b, c, d), x), ac))
a = Putar ke Kiri(a, s)
a = TambahkanTidak Ditandatangani(a, b)
Akhiri Sub
'Fungsi pengkodean tambahan MD5_F,MD5_G,MD5_H,MD5_I MD5
Fungsi Pribadi MD5_F(x, y, z)
MD5_F = (x Dan y) atau ((Bukan x) Dan 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 Xatau z)
Fungsi Akhir
Fungsi Pribadi MD5_I(x, y, z)
MD5_I = (y Xor (x atau (Bukan z)))
Fungsi Akhir
'16 konversi pengkodean heksadesimal
Fungsi Pribadi WordToHex(byVal lValue)
Redupkan lByte
Redupkan Hitungan
Untuk lHitungan = 0 Sampai 3
lByte = RShift(lValue, lCount * BITS_TO_A_BYTE) Dan MD5_m_lOnBits(BITS_TO_A_BYTE - 1)
WordToHex = WordToHex & Kanan(0 & Hex(lByte), 2)
Berikutnya
Fungsi Akhir
'Fungsi utama MD5 MD5 (string, bit pengkodean)
Fungsi Publik MD5 (byVal sMessage, byVal sType)
Redupkan x
Redupkan k
Redupkan AA
Redupkan BB
Redupkan CC
RedupDD
Redupkan a
Redupkan b
Redup c
Redup d
Konstan S11 = 7
Konstanta S12 = 12
Konstanta S13 = 17
Konstanta S14 = 22
Konstan S21 = 5
Konstan S22 = 9
Konstanta S23 = 14
Konstanta S24 = 20
Konstanta S31 = 4
Konstanta S32 = 11
Konstan S33 = 16
Konstanta S34 = 23
Konstan S41 = 6
Konstanta S42 = 10
Konstanta S43 = 15
Konstanta S44 = 21
x = ConvertToWordArray(sMessage) 'Langkah enkripsi 1: konversi array
a = &H67452301
b = &HEFCDAB89
c = &H98BADCFE
d = &H10325476
Untuk k = 0 Ke UBound(x) Langkah 16
AA = sebuah
BB = b
CC = c
HH = d
'Langkah enkripsi 2: konversi pengkodean
MD5_FF a, b, c, d, x(k+0), S11, &HD76AA478
MD5_FF d, a, b, c, x(k + 1), S12, &HE8C7B756
MD5_FF c, d, a, b, x(k + 2), S13, &H242070DB
MD5_FF b, c, d, a, x(k + 3), S14, &HC1BDCEEE
MD5_FF a, b, c, d, x(k + 4), S11, &HF57C0FAF
MD5_FF d, a, b, c, x(k + 5), S12, &H4787C62A
MD5_FF c, d, a, b, x(k+6), S13, &HA8304613
MD5_FF b, c, d, a, x(k + 7), S14, &HFD469501
MD5_FF a, b, c, d, x(k + 8), S11, &H698098D8
MD5_FF d, a, b, c, x(k + 9), S12, &H8B44F7AF
MD5_FF c, d, a, b, x(k + 10), S13, &HFFFF5BB1
MD5_FF b, c, d, a, x(k + 11), S14, &H895CD7BE
MD5_FF a, b, c, d, x(k + 12), S11, &H6B901122
MD5_FF d, a, b, c, x(k + 13), S12, &HFD987193
MD5_FF c, d, a, b, x(k+14), S13, &HA679438E
MD5_FF b, c, d, a, x(k + 15), S14, &H49B40821
MD5_GG a, b, c, d, x(k + 1), S21, &HF61E2562
MD5_GG d, a, b, c, x(k + 6), S22, &HC040B340
MD5_GG c, d, a, b, x(k + 11), S23, &H265E5A51
MD5_GG b, c, d, a, x(k + 0), S24, &HE9B6C7AA
MD5_GG a, b, c, d, x(k+5), S21, &HD62F105D
MD5_GG d, a, b, c, x(k + 10), S22, &H2441453
MD5_GG c, d, a, b, x(k + 15), S23, &HD8A1E681
MD5_GG b, c, d, a, x(k + 4), S24, &HE7D3FBC8
MD5_GG a, b, c, d, x(k + 9), S21, &H21E1CDE6
MD5_GG d, a, b, c, x(k + 14), S22, &HC33707D6
MD5_GG c, d, a, b, x(k + 3), S23, &HF4D50D87
MD5_GG b, c, d, a, x(k + 8), S24, &H455A14ED
MD5_GG a, b, c, d, x(k + 13), S21, &HA9E3E905
MD5_GG d, a, b, c, x(k + 2), S22, &HFCEFA3F8
MD5_GG c, d, a, b, x(k + 7), S23, &H676F02D9
MD5_GG b, c, d, a, x(k + 12), S24, &H8D2A4C8A
MD5_HH a, b, c, d, x(k + 5), S31, &HFFFA3942
MD5_HH d, a, b, c, x(k + 8), S32, &H8771F681
MD5_HH c, d, a, b, x(k + 11), S33, &H6D9D6122
MD5_HH b, c, d, a, x(k + 14), S34, &HFDE5380C
MD5_HH a, b, c, d, x(k + 1), S31, &HA4BEEA44
MD5_HH d, a, b, c, x(k + 4), S32, &H4BDECFA9
MD5_HH c, d, a, b, x(k + 7), S33, &HF6BB4B60
MD5_HH b, c, d, a, x(k + 10), S34, &HBEBFBC70
MD5_HH a, b, c, d, x(k + 13), S31, &H289B7EC6
MD5_HH d, a, b, c, x(k + 0), S32, &HEAA127FA
MD5_HH c, d, a, b, x(k+3), S33, &HD4EF3085
MD5_HH b, c, d, a, x(k + 6), S34, &H4881D05
MD5_HH a, b, c, d, x(k+9), S31, &HD9D4D039
MD5_HH d, a, b, c, x(k + 12), S32, &HE6DB99E5
MD5_HH c, d, a, b, x(k + 15), S33, &H1FA27CF8
MD5_HH b, c, d, a, x(k + 2), S34, &HC4AC5665
MD5_II a, b, c, d, x(k + 0), S41, &HF4292244
MD5_II d, a, b, c, x(k + 7), S42, &H432AFF97
MD5_II c, d, a, b, x(k + 14), S43, &HAB9423A7
MD5_II b, c, d, a, x(k + 5), S44, &HFC93A039
MD5_II a, b, c, d, x(k + 12), S41, &H655B59C3
MD5_II d, a, b, c, x(k + 3), S42, &H8F0CCC92
MD5_II c, d, a, b, x(k + 10), S43, &HFFEFF47D
MD5_II b, c, d, a, x(k + 1), S44, &H85845DD1
MD5_II a, b, c, d, x(k + 8), S41, &H6FA87E4F
MD5_II d, a, b, c, x(k + 15), S42, &HFE2CE6E0
MD5_II c, d, a, b, x(k + 6), S43, &HA3014314
MD5_II b, c, d, a, x(k + 13), S44, &H4E0811A1
MD5_II a, b, c, d, x(k + 4), S41, &HF7537E82
MD5_II d, a, b, c, x(k + 11), S42, &HBD3AF235
MD5_II c, d, a, b, x(k + 2), S43, &H2AD7D2BB
MD5_II b, c, d, a, x(k + 9), S44, &HEB86D391
'Langkah enkripsi 3: tambahkan konversi yang tidak ditandatangani
a = TambahkanTidak Ditandatangani(a, AA)
b = TambahkanTidak Ditandatangani(b, BB)
c = TambahkanTidak Ditandatangani(c, CC)
d = TambahkanTidak Ditandatangani(d, DD)
Berikutnya
Jika sType = 32 Maka
'Langkah Enkripsi 4: Pisahkan dan gabungkan setiap konversi heksadesimal 8 digit
MD5 = LCase(WordToHex(a) & WordToHex(b) & WordToHex(c) & WordToHex(d))
Kalau tidak
MD5 = LCase(WordToHex(b) & WordToHex(c))
Akhiri Jika
Fungsi Akhir
Fungsi Pribadi SHA256_LSift(byVal lValue, byVal iShiftBits)
Jika iShiftBits = 0 Maka
SHA256_LSift = lNilai
Fungsi Keluar
ElseIf iShiftBits = 31 Lalu
Jika lNilai Dan 1 Lalu
SHA256_LSshift = &H80000000
Kalau tidak
SHA256_LPergeseran = 0
Akhiri Jika
Fungsi Keluar
ElseIf iShiftBits < 0 atau iShiftBits > 31 Lalu
Err.Naikkan 6
Akhiri Jika
Jika (lValue Dan SHA256_m_l2Power(31 - iShiftBits)) Lalu
SHA256_LSift = ((lValue Dan SHA256_m_lOnBits(31 - (iShiftBits + 1))) * SHA256_m_l2Power(iShiftBits)) atau &H80000000
Kalau tidak
SHA256_LSift = ((lValue Dan SHA256_m_lOnBits(31 - iShiftBits)) * SHA256_m_l2Power(iShiftBits))
Akhiri Jika
Fungsi Akhir
Fungsi Pribadi SHA256_RShift(byVal lValue, byVal iShiftBits)
Jika iShiftBits = 0 Maka
SHA256_RSshift = lNilai
Fungsi Keluar
ElseIf iShiftBits = 31 Lalu
Jika lNilai Dan &H80000000 Lalu
SHA256_RSshift = 1
Kalau tidak
SHA256_RSshift = 0
Akhiri Jika
Fungsi Keluar
ElseIf iShiftBits < 0 atau iShiftBits > 31 Lalu
Err.Naikkan 6
Akhiri Jika
SHA256_RShift = (lNilai Dan &H7FFFFFFE) / SHA256_m_l2Power(iShiftBits)
Jika (lNilai Dan &H80000000) Lalu
SHA256_RShift = (SHA256_RShift atau (&H40000000 / SHA256_m_l2Power(iShiftBits - 1)))
Akhiri Jika
Fungsi Akhir
Fungsi Pribadi SHA256_AddUnsigned(byVal lX, byVal lY)
x4
kamu4
x8
y8
Redupkan Hasil
lX8 = lX Dan &H80000000
lY8 = lY Dan &H80000000
lX4 = lX Dan &H40000000
lY4 = lY Dan &H40000000
lHasil = (lX Dan &H3FFFFFFFF) + (lY Dan &H3FFFFFFFF)
Jika lX4 Dan lY4 Lalu
lHasil = lHasil Xor &H80000000 Xor lX8 Xor lY8
LainJika lX4 atau lY4 Lalu
Jika lHasil Dan &H40000000 Lalu
lHasil = lHasil Xor &HC0000000 Xor lX8 Xor lY8
Kalau tidak
lHasil = lHasil Xor &H40000000 Xor lX8 Xor lY8
Akhiri Jika
Kalau tidak
lHasil = lHasil Xatau lX8 Xatau lY8
Akhiri Jika
SHA256_AddUnsigned = lHasil
Fungsi Akhir
Fungsi Pribadi SHA256_CH(x, y, z)
SHA256_Ch = ((x Dan y) Xor ((Bukan x) Dan z))
Fungsi Akhir
Fungsi Pribadi SHA256_Maj(x, y, z)
SHA256_Maj = ((x Dan y) Xor (x Dan z) Xor (y Dan z))
Fungsi Akhir
Fungsi Pribadi SHA256_S(x, n)
SHA256_S = (SHA256_RShift(x, (n Dan SHA256_m_lOnBits(4))) atau SHA256_LSift(x, (32 - (n Dan SHA256_m_lOnBits(4)))))
Fungsi Akhir
Fungsi Pribadi SHA256_R(x, n)
SHA256_R = SHA256_RSshift(x, cLng(n Dan SHA256_m_lOnBits(4)))
Fungsi Akhir
Fungsi Pribadi SHA256_Sigma0(x)
SHA256_Sigma0 = (SHA256_S(x, 2) Xatau SHA256_S(x, 13) Xatau SHA256_S(x, 22))
Fungsi Akhir
Fungsi Pribadi SHA256_Sigma1(x)
SHA256_Sigma1 = (SHA256_S(x, 6) Xatau SHA256_S(x, 11) Xatau SHA256_S(x, 25))
Fungsi Akhir
Fungsi Pribadi SHA256_Gamma0(x)
SHA256_Gamma0 = (SHA256_S(x, 7) Xatau SHA256_S(x, 18) Xatau SHA256_R(x, 3))
Fungsi Akhir
Fungsi Pribadi SHA256_Gamma1(x)
SHA256_Gamma1 = (SHA256_S(x, 17) Xatau SHA256_S(x, 19) Xatau SHA256_R(x, 10))
Fungsi Akhir
Fungsi Pribadi SHA256_ConvertToWordArray(byVal sMessage)
Redupkan Panjang Pesan
Redupkan NumberOfWords
Redupkan lWordArray()
Redupkan lBytePosition
Redupkan lByteCount
Redupkan Jumlah Kata
Redupkan lByte
Konstan MODULUS_BITS = 512
Konstanta CONGRUENT_BITS = 448
lPanjang Pesan = Len(sPesan)
lNumberOfWords = (((lMessageLength + ((MODULUS_BITS - CONGRUENT_BITS) / BITS_TO_A_BYTE)) / (MODULUS_BITS / BITS_TO_A_BYTE)) + 1) * (MODULUS_BITS / BITS_TO_A_WORD)
Redupkan kembali lWordArray(lNumberOfWords - 1)
lBytePosisi = 0
lByteHitungan = 0
Lakukan Hingga lByteCount >= lMessageLength
lWordCount = lByteCount / BYTES_TO_A_WORD
lBytePosition = (3 - (lByteCount Mod BYTES_TO_A_WORD)) * BITS_TO_A_BYTE
lByte = AscB(Mid(sMessage, lByteCount + 1, 1))
lWordArray(lWordCount) = lWordArray(lWordCount) atau SHA256_LShift(lByte, lBytePosition)
lByteCount = lByteCount + 1
Lingkaran
lWordCount = lByteCount / BYTES_TO_A_WORD
lBytePosition = (3 - (lByteCount Mod BYTES_TO_A_WORD)) * BITS_TO_A_BYTE
lWordArray(lWordCount) = lWordArray(lWordCount) atau SHA256_LShift(&H80, lBytePosition)
lWordArray(lNumberOfWords - 1) = SHA256_LSift(lMessageLength, 3)
lWordArray(lNumberOfWords - 2) = SHA256_RShift(lMessageLength, 29)
SHA256_ConvertToWordArray = lWordArray
Fungsi Akhir
' ===== ============
' Algoritma enkripsi SHA256
' ===== =========
'Metode panggilan:
' SHA256(sPesan, p_Len)
' p_Len mengontrol panjang string yang dihasilkan, 1 adalah 8 bit, 2 adalah 16 bit, nilai maksimum adalah 8, yaitu panjang setelah enkripsi adalah 64 bit
'Kontrol enkripsi 8-bit/16-bit/24-bit/32-bit/40-bit/48-bit/56-bit/64-bit
Fungsi Publik SHA256(olehVal sMessage, olehVal p_Len)
Redupkan HASH(7)
Redup
Redupkan W(63)
Redupkan a
Redupkan b
Redup c
Redup d
Redupkan e
F
Redup g
H
Redupkan saya
J
Redupkan T1
Redupkan T2
HASH(0) = &H6A09E667
HASH(1) = &HBB67AE85
HASH(2) = &H3C6EF372
HASH(3) = &HA54FF53A
HASH(4) = &H510E527F
HASH(5) = &H9B05688C
HASH(6) = &H1F83D9AB
HASH(7) = &H5BE0CD19
M = SHA256_ConvertToWordArray(sPesan)
Untuk i = 0 Ke UBound(M) Langkah 16
a = HASH(0)
b = HASH(1)
c = HASH(2)
d = HASH(3)
e = HASH(4)
f = HASH(5)
g = HASH(6)
jam = HASH(7)
Untuk j = 0 Sampai 63
Jika j < 16 Maka
W(j) = M(j + saya)
Kalau tidak
W(j) = SHA256_AddUnsigned(SHA256_AddUnsigned(SHA256_AddUnsigned(SHA256_Gamma1(W(j - 2)), W(j - 7)), SHA256_Gamma0(W(j - 15))), W(j - 16))
Akhiri Jika
T1 = SHA256_AddUnsigned(SHA256_AddUnsigned(SHA256_AddUnsigned(SHA256_AddUnsigned(h, SHA256_Sigma1(e)), SHA256_CH(e, f, g)), SHA256_K(j)), W(j))
T2 = SHA256_AddUnsigned(SHA256_Sigma0(a), SHA256_Maj(a, b, c))
jam = g
g = f
f = e
e = SHA256_AddUnsigned(d, T1)
d = c
c = b
b = sebuah
a = SHA256_AddUnsigned(T1, T2)
Berikutnya
HASH(0) = SHA256_AddUnsigned(a, HASH(0))
HASH(1) = SHA256_AddUnsigned(b, HASH(1))
HASH(2) = SHA256_AddUnsigned(c, HASH(2))
HASH(3) = SHA256_AddUnsigned(d, HASH(3))
HASH(4) = SHA256_AddUnsigned(e, HASH(4))
HASH(5) = SHA256_AddUnsigned(f, HASH(5))
HASH(6) = SHA256_AddUnsigned(g, HASH(6))
HASH(7) = SHA256_AddUnsigned(h, HASH(7))
Berikutnya
SHA256 =
Jika p_Len >= 8 Maka p_Len = 8
Jika p_Len <= 0 Maka p_Len = 2
Untuk i = 0 Ke p_Len - 1
SHA256 = SHA256 & Kanan(00000000 & Hex(HASH(i)), 8)
Berikutnya
SHA256 = Kasus LC(SHA256)
Fungsi Akhir
Mode Enkripsi Fungsi Publik (ByVal p_String, ByVal p_Type)
Redupkan E1, E2
E1s = 16' Panjang enkripsi algoritma MD5 pertama atau panjang enkripsi MD5 16-bit
E2s = 2' Panjang enkripsi algoritma kedua atau SHA256 adalah 2*8=16 bit Panjang enkripsi SHA256, panjang enkripsi maksimum adalah 8*8=64 bit
Jika Bukan IsNumeric(p_Type) Lalu
p_Jenis = 1
ElseIf p_Type > 7 atau p_Type < 0 Lalu 'Nilai jumlah paket berdasarkan nilai maksimum p_Type
p_Jenis = 1
Akhiri Jika
Jika Bukan IsNumeric(E1s) Lalu
E1 = 16
ElseIf E1s <> 16 Dan E1s <> 32 Lalu
E1 = 16
Akhiri Jika
Jika Bukan IsNumeric(E2s) Lalu
E2s = 2
ElseIf E2s > 8 atau E2s < 0 Maka
E2s = 2
Akhiri Jika
' =============
'Yang terbaik adalah menyesuaikan skema enkripsi saat menerapkannya untuk pertama kali. Saat ini ada hingga 8 skema.
'Panjang string terenkripsi adalah 16 bit, yang dapat disesuaikan saat digunakan.
' =============
Pilih Kasus p_Type
Kasus 0' Algoritma MD5
Mode Enkripsi = MD5(p_String, E1s)
Kasus 1' Algoritma SHA256
Mode Enkripsi = SHA256(p_String, E2s)
Kasus 2' MD5 dulu, lalu SHA256
Mode Enkripsi = SHA256(MD5(p_String, E1s), E2s)
Kasus 3 'SHA256 dulu, lalu MD5
Mode Enkripsi = MD5(SHA256(p_String, E2s), E1s)
Kasus 4' MD5 dua kali
Mode Enkripsi = MD5(MD5(p_String, E1s), E2s)
Kasus 5' SHA256 dua kali
Mode Enkripsi = SHA256(SHA256(p_String, E1s), E2s)
Kasus 6' 8 bit pertama dari algoritma MD5 dan 8 bit terakhir dari algoritma SHA256
EncryptMode = Kiri(MD5(p_String, E1s), 8) & Kanan(SHA256(p_String, E2s), 8)
Kasus 7' 8 bit pertama dari algoritma SHA256 dan 8 bit terakhir dari algoritma MD5
EncryptMode = Kiri(SHA256(p_String, E2s), 8) & Kanan(MD5(p_String, E1s), 8)
Pilihan Akhir
Fungsi Akhir
' ===============
'Fungsi enkripsi universal untuk semua kata sandi situs
' ===============
PassWordEnt Fungsi Publik(ByVal p_String)
Jika p_String = atau IsNull(p_String) Maka p_String = 1
' Ambil sisa nilai AscW dari karakter terakhir kata sandi dan 8 sebagai koefisien skema enkripsi
PassWordEnt = EncryptMode(p_String, AscW(LCase(Kanan(p_String, 1))) Mod 8)
Fungsi Akhir
Kelas Akhir
%>
Demo:
Copy kode kodenya sebagai berikut:
<!--#termasuk file=cls_Encrypt.asp-->
<%
Redupkan o
Setel o = Cls_Encrypt baru
Algoritma Response.write MD5: & o.EncryptMode(admin,0) & <br />
Algoritma Response.write SHA256: & o.EncryptMode(admin,1) & <br />
Response.tulis MD5 terlebih dahulu lalu SHA256: & o.EncryptMode(admin,2) & <br />
Response.tulis SHA256 terlebih dahulu lalu MD5: & o.EncryptMode(admin,3) & <br />
Response.tulis MD5 dua kali: & o.EncryptMode(admin,4) & <br />
Response.tulis SHA256 dua kali: & o.EncryptMode(admin,5) & <br />
Response.write 8 digit pertama algoritma MD5 dan 8 digit terakhir algoritma SHA256: & o.EncryptMode(admin,6) & <br />
Response.write 8 bit pertama algoritma SHA256 dan 8 bit terakhir algoritma MD5: & o.EncryptMode(admin,7) & <br /><hr />
Response.write mengambil nilai AscW dari karakter terakhir kata sandi dan sisa 8 sebagai koefisien skema enkripsi: & o.PassWordEnt(admin) & <br /><hr />
Response.tulis enkripsi MD5 16-bit: & o.md5(admin,16) & <br />
Response.write Enkripsi MD5 32-bit: & o.md5(admin,32) & <br /><hr />
Response.tulis enkripsi SHA256 8-bit: & o.sha256(admin,1) & <br />
Response.write Enkripsi SHA256 16-bit: & o.sha256(admin,2) & <br />
Response.write Enkripsi SHA256 24-bit: & o.sha256(admin,3) & <br />
Response.write Enkripsi SHA256 32-bit: & o.sha256(admin,4) & <br />
Response.write enkripsi SHA256 40-bit: & o.sha256(admin,5) & <br />
Response.write Enkripsi SHA256 48-bit: & o.sha256(admin,6) & <br />
Response.write enkripsi SHA256 56-bit: & o.sha256(admin,7) & <br />
Response.write Enkripsi SHA256 64-bit: & o.sha256(admin,8) & <br />
Tetapkan o = tidak ada
%>