ASP改进MD5、SHA256加密类(两倍多许多倍)

目前可实现:MD5算法SHA256算法,MD5加密,MD5、SHA256,后的头两个MD5,两SHA256,8位MD5算法的8位加密算法后,8点后的8位MD5算法SHA256算法,密码的最后一个字符的ascw值和余数为8加密格式的系数,16位MD5加密,32位MD5加密,8位的SHA256加密,16位的SHA256加密,24位的SHA256加密,32位的SHA256加密,40位的SHA256加密,48位的SHA256加密,56位的SHA256加密,64位的SHA256加密算法源代码,读更多的书,你可以自定义更多的加密和加密算法相结合,说的蛮力算法MD5再见。
cls_encrypt.asp源代码:
复制代码代码如下所示:
<
私人const bits_to_a_byte = 8
私人const bytes_to_a_word = 4
私人const bits_to_a_word = 32
类cls_encrypt
私人md5_m_lonbits(30)
私人md5_m_l2power(30)
私人sha256_m_lonbits(30)
私人sha256_m_l2power(30)
私人sha256_k(63)
私有子class_initialize
md5_m_lonbits(0)=(1)设立
md5_m_lonbits(1)=(3)设立
md5_m_lonbits(2)=(7)设立
md5_m_lonbits(3)=(15)设立
md5_m_lonbits(4)=(31)设立
md5_m_lonbits(5)=(63)设立
md5_m_lonbits(6)=(127)设立
md5_m_lonbits(7)=(255)设立
md5_m_lonbits(8)=(511)设立
md5_m_lonbits(9)=(1023)设立
md5_m_lonbits(10)=(2047)设立
md5_m_lonbits(11)=(4095)设立
md5_m_lonbits(12)=(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)=(16777215)设立
md5_m_lonbits(24)=(33554431)设立
md5_m_lonbits(25)=(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_l2power(0)=(1)设立
md5_m_l2power(1)=(2)设立
md5_m_l2power(2)=(4)设立
md5_m_l2power(3)=(8)设立
md5_m_l2power(4)=(16)设立
md5_m_l2power(5)=(32)设立
md5_m_l2power(6)=(64)设立
md5_m_l2power(7)=(128)设立
md5_m_l2power(8)=(256)设立
md5_m_l2power(9)=(512)设立
md5_m_l2power(10)=(1024)设立
md5_m_l2power(11)=(2048)设立
md5_m_l2power(12)=(4096)设立
md5_m_l2power(13)=(8192)设立
md5_m_l2power(14)= CLng(16384)
md5_m_l2power(15)= CLng(32768)
md5_m_l2power(16)= CLng(65536)
md5_m_l2power(17)= CLng(131072)
md5_m_l2power(18)= CLng(262144)
md5_m_l2power(19)= CLng(524288)
md5_m_l2power(20)= CLng(1048576)
md5_m_l2power(21)= CLng(2097152)
md5_m_l2power(22)= CLng(4194304)
md5_m_l2power(23)= CLng(8388608)
md5_m_l2power(24)=(16777216)设立
md5_m_l2power(25)=(33554432)设立
md5_m_l2power(26)=(67108864)设立
md5_m_l2power(27)= CLng(134217728)
md5_m_l2power(28)= CLng(268435456)
md5_m_l2power(29)= CLng(536870912)
md5_m_l2power(30)= CLng(1073741824)
sha256_m_lonbits(0)=(1)设立
sha256_m_lonbits(1)=(3)设立
sha256_m_lonbits(2)=(7)设立
sha256_m_lonbits(3)=(15)设立
sha256_m_lonbits(4)=(31)设立
sha256_m_lonbits(5)=(63)设立
sha256_m_lonbits(6)=(127)设立
sha256_m_lonbits(7)=(255)设立
sha256_m_lonbits(8)=(511)设立
sha256_m_lonbits(9)=(1023)设立
sha256_m_lonbits(10)=(2047)设立
sha256_m_lonbits(11)=(4095)设立
sha256_m_lonbits(12)=(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)=(16777215)设立
sha256_m_lonbits(24)=(33554431)设立
sha256_m_lonbits(25)=(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_l2power(0)=(1)设立
sha256_m_l2power(1)=(2)设立
sha256_m_l2power(2)=(4)设立
sha256_m_l2power(3)=(8)设立
sha256_m_l2power(4)=(16)设立
sha256_m_l2power(5)=(32)设立
sha256_m_l2power(6)=(64)设立
sha256_m_l2power(7)=(128)设立
sha256_m_l2power(8)=(256)设立
sha256_m_l2power(9)=(512)设立
sha256_m_l2power(10)=(1024)设立
sha256_m_l2power(11)=(2048)设立
sha256_m_l2power(12)=(4096)设立
sha256_m_l2power(13)=(8192)设立
sha256_m_l2power(14)= CLng(16384)
sha256_m_l2power(15)= CLng(32768)
sha256_m_l2power(16)= CLng(65536)
sha256_m_l2power(17)= CLng(131072)
sha256_m_l2power(18)= CLng(262144)
sha256_m_l2power(19)= CLng(524288)
sha256_m_l2power(20)= CLng(1048576)
sha256_m_l2power(21)= CLng(2097152)
sha256_m_l2power(22)= CLng(4194304)
sha256_m_l2power(23)= CLng(8388608)
sha256_m_l2power(24)=(16777216)设立
sha256_m_l2power(25)=(33554432)设立
sha256_m_l2power(26)=(67108864)设立
sha256_m_l2power(27)= CLng(134217728)
sha256_m_l2power(28)= CLng(268435456)
sha256_m_l2power(29)= CLng(536870912)
sha256_m_l2power(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
端子
私有子class_terminate
端子
字符转移数组函数
私有函数converttowordarray(ByVal smessage)
昏暗的lmessagelength
昏暗的lnumberofwords
昏暗的lwordarray()
昏暗的lbyteposition
昏暗的lbytecount
昏暗的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
直到lbytecount = lmessagelength做
lwordcount = lbytecount bytes_to_a_word
lbyteposition =(lbytecount MOD bytes_to_a_word)* bits_to_a_byte
LWordArray(lwordcount)= lwordarray(lwordcount)或LShift(ASC(MID(smessage,lbytecount + 1, 1)),lbyteposition)
lbytecount = lbytecount + 1

lwordcount = lbytecount bytes_to_a_word
lbyteposition =(lbytecount MOD bytes_to_a_word)* bits_to_a_byte
LWordArray(lwordcount)= lwordarray(lwordcount)或LShift(H80,lbyteposition)
LWordArray(lnumberofwords - 2)= LSHIFT(lmessagelength,3)
LWordArray(lnumberofwords - 1)= rshift(lmessagelength,29)
converttowordarray = lwordarray
端功能

字符串左移位主函数
私有函数LSHIFT(ByVal左值,ByVal ishiftbits)
如果ishiftbits = 0
LShift =左值
退出功能
ishiftbits = 31
If lValue And 1 Then
h80000000 LSHIFT =
其他的
LShift = 0
最后如果
退出功能
ishiftbits 31
错了,提高6。
最后如果
如果(左值和md5_m_l2power(31 ishiftbits))然后
LShift =((左值和md5_m_lonbits(31 -(((31(((ishiftbits + 1)))* md5_m_l2power(ishiftbits))或h80000000
其他的
LShift =((左值和md5_m_lonbits(31 ishiftbits))* md5_m_l2power(ishiftbits))
最后如果
端功能
字符串右移主函数
私有函数rshift(ByVal左值,ByVal ishiftbits)
如果ishiftbits = 0
rshift =左值
退出功能
ishiftbits = 31
如果左值和h80000000然后
rshift = 1
其他的
rshift = 0
最后如果
退出功能
ishiftbits 31
错了,提高6。
最后如果
rshift =(左值和h7ffffffe) md5_m_l2power(ishiftbits)
如果(左值和h80000000)然后
rshift =(RShift或(h40000000 md5_m_l2power(ishiftbits - 1)))
最后如果
端功能
通过左、右移位函数实现的字符串移位转换
私有函数RotateLeft(ByVal左值,ByVal ishiftbits)
RotateLeft = LSHIFT(左值,ishiftbits)或RShift(左值,(32 ishiftbits))
端功能
附加未签名的16代码代码
私有函数addunsigned(ByVal LX,ByVal LY)
昏暗的LX4
昏暗LY4
昏暗的lx8
昏暗LY8
暗淡一些
lx8 = LX和h80000000
LY和h80000000 LY8 =
LX4 = LX和h40000000
LY4 = LY和h40000000
一些=(LX和h3fffffff)+(LY和h3fffffff)
如果LX4、LY4然后
一些h80000000异或XOR异或=一些lx8 LY8
elseif LX4或LY4然后
如果一些和h40000000然后
一些hc0000000异或XOR异或=一些lx8 LY8
其他的
一些h40000000异或XOR异或=一些lx8 LY8
最后如果
其他的
一些一些lx8异或XOR LY8 =
最后如果
一些addunsigned =
端功能

md5_ff,md5_gg,md5_hh MD5编码功能,md5_ii大师
私有子md5_ff(A,B,C,D,X,S,AC)
a addunsigned(A,addunsigned(addunsigned(md5_f(md5_f(B,C,D),x),AC)))
a RotateLeft(A,S)
a addunsigned(A,B)
端子
私有子md5_gg(A,B,C,D,X,S,AC)
a addunsigned(A,addunsigned(addunsigned(md5_g(md5_g(B,C,D),x),AC)))
a RotateLeft(A,S)
a addunsigned(A,B)
端子
私有子md5_hh(A,B,C,D,X,S,AC)
a addunsigned(A,addunsigned(addunsigned(md5_h(md5_h(B,C,D),x),AC)))
a RotateLeft(A,S)
a addunsigned(A,B)
端子
私有子md5_ii(A,B,C,D,X,S,AC)
a addunsigned(A,addunsigned(addunsigned(md5_i(md5_i(B,C,D),x),AC)))
a RotateLeft(A,S)
a addunsigned(A,B)
端子

md5_f,md5_g,md5_h,md5_i MD5辅助编码功能
私有函数md5_f(x,y,z)
md5_f =(X和Y)或((不是X)和Z)
端功能
私有函数md5_g(x,y,z)
md5_g =(X、Z)或(Y(不是Z))
端功能
私有函数md5_h(x,y,z)
md5_h =(X或Y或Z)
端功能
私有函数md5_i(x,y,z)
md5_i =(Y异或(X或(不是Z)))
端功能

16代码转换
私有函数wordtohex(ByVal左值)
昏暗的lbyte
昏暗的lCount
0到3为lCount =
lbyte = rshift(左值,lCount * bits_to_a_byte)和md5_m_lonbits(bits_to_a_byte - 1)
wordtohex = wordtohex右(0 六(lbyte),2)
下一个
端功能

MD5主函数MD5(字符串,编码位)
公共函数MD5(ByVal smessage,ByVal型)
昏暗的X
Dim K
昏暗的AA
昏暗的BB
昏暗的CC
昏暗的DD
暗淡
尺寸B
昏暗的C
昏暗的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)的加密步骤1:数组的转换
a h67452301
B = hefcdab89
C = h98badcfe
a h10325476
对于k = 0,UBound(x)步骤16
AA =一
BB = B
CC = C
DD = D
加密步骤2:编码转换
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),3,hf4292244
md5_ii D,A,B,C,X(k + 7),S42,h432aff97
md5_ii C,D,A,B,X(k + 14),S3、hab9423a7
md5_ii B,C,D,A,X(k + 5),S44,hfc93a039
md5_ii A,B,C,D,X(k + 12),3,h655b59c3
md5_ii D,A,B,C,X(k + 3),S42,h8f0ccc92
md5_ii C,D,A,B,X(k + 10),S3、hffeff47d
md5_ii B,C,D,A,X(k + 1),S44,h85845dd1
md5_ii A,B,C,D,X(k + 8),3,h6fa87e4f
md5_ii D,A,B,C,X(k + 15),S42,hfe2ce6e0
md5_ii C,D,A,B,X(k + 6),S3、ha3014314
md5_ii B,C,D,A,X(k + 13),S44,h4e0811a1
md5_ii A,B,C,D,X(k + 4),3,hf7537e82
md5_ii D,A,B,C,X(k + 11),S42,hbd3af235
md5_ii C,D,A,B,X(k + 2),S3、h2ad7d2bb
md5_ii B,C,D,A,X(k + 9),S44,heb86d391
加密步骤3:添加无符号转换
a addunsigned(A,AA)
B = addunsigned(B,BB)
C = addunsigned(C,CC)
a addunsigned(D,DD)
下一个
如果S = 32
加密步骤4:拆分和合并每个8位16级转换
MD5 = LCase(wordtohex(一)wordtohex(B)wordtohex wordtohex(C)(D))
其他的
MD5 = 1例(wordtohex(B)wordtohex(C))
最后如果
端功能
私有函数sha256_lshift(ByVal左值,ByVal ishiftbits)
如果ishiftbits = 0
sha256_lshift =左值
退出功能
ishiftbits = 31
If lValue And 1 Then
sha256_lshift = h80000000
其他的
sha256_lshift = 0
最后如果
退出功能
ishiftbits 31
错了,提高6。
最后如果
如果(左值和sha256_m_l2power(31 ishiftbits))然后
sha256_lshift =((左值和sha256_m_lonbits(31 -(((31(((ishiftbits + 1)))* sha256_m_l2power(ishiftbits))或h80000000
其他的
sha256_lshift =((左值和sha256_m_lonbits(31 ishiftbits))* sha256_m_l2power(ishiftbits))
最后如果
端功能
私有函数sha256_rshift(ByVal左值,ByVal ishiftbits)
如果ishiftbits = 0
sha256_rshift =左值
退出功能
ishiftbits = 31
如果左值和h80000000然后
sha256_rshift = 1
其他的
sha256_rshift = 0
最后如果
退出功能
ishiftbits 31
错了,提高6。
最后如果
sha256_rshift =(左值和h7ffffffe) sha256_m_l2power(ishiftbits)
如果(左值和h80000000)然后
sha256_rshift =(sha256_rshift或(h40000000 sha256_m_l2power(ishiftbits - 1)))
最后如果
端功能
私有函数sha256_addunsigned(ByVal LX,ByVal LY)
昏暗的LX4
昏暗LY4
昏暗的lx8
昏暗LY8
暗淡一些
lx8 = LX和h80000000
LY和h80000000 LY8 =
LX4 = LX和h40000000
LY4 = LY和h40000000
一些=(LX和h3fffffff)+(LY和h3fffffff)
如果LX4、LY4然后
一些h80000000异或XOR异或=一些lx8 LY8
elseif LX4或LY4然后
如果一些和h40000000然后
一些hc0000000异或XOR异或=一些lx8 LY8
其他的
一些h40000000异或XOR异或=一些lx8 LY8
最后如果
其他的
一些一些lx8异或XOR LY8 =
最后如果
一些sha256_addunsigned =
端功能
私有函数sha256_ch(x,y,z)
(sha256_ch =(X(Y)异或(不是X)和Z))
端功能
私有函数sha256_maj(x,y,z)
sha256_maj =((x,y)(x,z)异或XOR(Y和Z))
端功能
私有函数sha256_s(x,n)
sha256_s =(sha256_rshift(x,((N和sha256_m_lonbits(4)))或sha256_lshift(x,(32 -(N,sha256_m_lonbits(4 )))))))
端功能
私有函数sha256_r(x,n)
sha256_r = sha256_rshift(x,CLNG(N和sha256_m_lonbits(4))))
端功能
私有函数sha256_sigma0(X)
sha256_sigma0 =(sha256_s(x,2)异或sha256_s(x,13)异或sha256_s(x,22))
端功能
私有函数sha256_sigma1(X)
sha256_sigma1 =(sha256_s(x,6)异或sha256_s(x,11)异或sha256_s(x,25))
端功能
私有函数sha256_gamma0(X)
sha256_gamma0 =(sha256_s(x,7)异或sha256_s(x,18)异或sha256_r(x,3))
端功能
私有函数sha256_gamma1(X)
sha256_gamma1 =(sha256_s(x,17)异或sha256_s(x,19)异或sha256_r(x,10))
端功能
私有函数sha256_converttowordarray(ByVal smessage)
昏暗的lmessagelength
昏暗的lnumberofwords
昏暗的lwordarray()
昏暗的lbyteposition
昏暗的lbytecount
昏暗的lwordcount
昏暗的lbyte
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
直到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)或sha256_lshift(lbyte,lbyteposition)
lbytecount = lbytecount + 1

lwordcount = lbytecount bytes_to_a_word
lbyteposition =(3 -(lbytecount MOD bytes_to_a_word))* bits_to_a_byte
LWordArray(lwordcount)= lwordarray(lwordcount)或sha256_lshift(H80,lbyteposition)
LWordArray(lnumberofwords - 1)= sha256_lshift(lmessagelength,3)
LWordArray(lnumberofwords - 2)= sha256_rshift(lmessagelength,29)
sha256_converttowordarray = lwordarray
端功能

==========================================================================================
SHA256加密算法
========================================================================================
调用方法:
SHA256(smessage,p_len)
p_len控件的字符串的长度,1是8位,2和16,最大值为8,即加密的长度为64位。
控制8位 16位 24位 32位 40位 48位 56位 64位加密
公共函数SHA256(ByVal smessage,ByVal p_len)
散列(7)
定义m
暗淡的W(63)
暗淡
尺寸B
昏暗的C
昏暗的D
昏暗的E
昏暗的F
昏暗的G
半小时
朦胧的我
昏暗的J
昏暗的T1
昏暗的T2
(0)= h6a09e667哈希
(1)= hbb67ae85哈希
(2)= h3c6ef372哈希
(3)= ha54ff53a哈希
(4)= h510e527f哈希
(5)= h9b05688c哈希
(6)= h1f83d9ab哈希
(7)= h5be0cd19哈希
M = sha256_converttowordarray(smessage)
我= 0,UBound(M)步骤16
a =哈希(0)
b =哈希(1)
c =散列(2)
d =散列(3)
e =散列(4)
f =哈希(5)
g =哈希(6)
h =散列(7)
对于j = 0到63
如果J<16
w(j)=m(j + i)
其他的
W(j)= sha256_addunsigned(sha256_addunsigned(sha256_addunsigned(sha256_gamma1(W(J 2))、W(J-7)),sha256_gamma0(W(15)))。)
最后如果
T1 = sha256_addunsigned(sha256_addunsigned(sha256_addunsigned(sha256_addunsigned(H,sha256_sigma1(E)),sha256_ch(E,F,G))。)
T2 = sha256_addunsigned(sha256_sigma0(A),(A,B,C sha256_maj))
H = G
G = F
F = E
E = sha256_addunsigned(D,T1)
D = C
C = B
B =一个
a sha256_addunsigned(T1,T2)
下一个
哈希(0)= sha256_addunsigned(A、散列(0))
哈希(1)= sha256_addunsigned(B,哈希(1))
哈希(2)= sha256_addunsigned(C,哈希(2))
哈希(3)= sha256_addunsigned(D,哈希(3))
哈希(4)=(E,sha256_addunsigned哈希(4))
哈希(5)= sha256_addunsigned(F,哈希(5))
哈希(6)= sha256_addunsigned(G,哈希(6))
哈希(7)= sha256_addunsigned(H,哈希(7))
下一个
为实现
如果p_len或8然后p_len = 8
如果p_len 0然后p_len = 2
我p_len = 0 - 1
SHA256 = SHA256右(00000000 六(hash(我)),8)
下一个
SHA256 = LCase(实现)
端功能

公共函数EncryptMode(ByVal p_string,ByVal p_type)
昏暗的E1、E2
E1 = 16 ' 16 '第一或MD5算法加密长度16位MD5加密长度
E2 = 2秒或SHA256算法加密长度为2 * 8 = 16位SHA256加密长度、最大的加密长度是8 * 8 = 64点
如果Not IsNumeric(p_type)然后
p_type = 1
p_type > 7或p_type<0然后判断方案的数量,根据p_type最大价值判断
p_type = 1
最后如果
如果Not IsNumeric(E1)然后
E1 = 16
16和E1 32然后E1S <> <>
E1 = 16
最后如果
如果Not IsNumeric(E2)然后
E2 = 2
E2或E2S然后<0>8
E2 = 2
最后如果
==========================================
最好使用第一个布局时调整加密方案,现在最多有8个选项。
在加密后,字符串长度为16位,可以在使用中进行调整。
==========================================
选择案例p_type
案例0的MD5算法
encryptmode = MD5(p_string,E1)
案例1的SHA256算法
encryptmode = SHA256(p_string,E2)
案例2第一MD5加密
encryptmode = SHA256(MD5(p_string,E1,E2))
案例3第一SHA256算法
encryptmode = MD5(SHA256(p_string,E1,E2))
案例4两倍MD5
encryptmode = MD5(MD5(p_string,E1,E2))
案例5两次SHA256
encryptmode = SHA256(SHA256(p_string,E1,E2))
8位的SHA256算法案例66后的第一个8位MD5算法
encryptmode =左(MD5(p_string,E1),8)右(SHA256(p_string,E2),8)
8位MD5算法案例77后的第一个8位加密算法
encryptmode =左(SHA256(p_string,E2),8)右(MD5(p_string,E1),8)
最后选择
端功能
============================================
全站密码一般加密函数
============================================
公共功能passwordent(ByVal p_string)
如果p_string = 或IsNull(p_string)然后p_string = 1
把这个密码的最后一个字符的ascw值和8余数为加密格式的系数
passwordent = encryptmode(p_string,ascw(1例(右((p_string,1)))mod 8)
端功能
类的结束
%>

uff1a示范
复制代码代码如下所示:

<
昏暗的O
设置O =新cls_encrypt
response.writeMD5算法:o.encryptmode(管理
response.writeSHA256算法:o.encryptmode(管理
response.writeMD5后实现:o.encryptmode(管理
response.write实现后的MD5:o.encryptmode(管理
response.write两次MD5:o.encryptmode(管理
response.write两次SHA256:o.encryptmode(管理
response.write前8位MD5算法后8位的SHA256算法:o.encryptmode(管理
response.write前8位的SHA256算法后8位MD5算法:o.encryptmode(管理
response.write以密码的最后一个字符的ascw值和8余数为加密方案系数:o.passwordent(admin)。
response.write16位MD5加密:o.md5(管理
response.write32位MD5加密:o.md5(管理
8位response.write SHA256加密:o.sha256(管理
16位response.write SHA256加密:o.sha256(管理
24位response.write SHA256加密:o.sha256(管理
32位response.write SHA256加密:o.sha256(管理
40位response.write SHA256加密:o.sha256(管理
48位response.write SHA256加密:o.sha256(管理
56位response.write SHA256加密:o.sha256(管理
64位response.write SHA256加密:o.sha256(管理
设置o =无
%>