في بعض الأحيان يستمتع الجميع بتشفير وفك تشفير base64. وفيما يلي رمز التنفيذ المحدد الذي يمكن للأصدقاء المحتاجين الرجوع إليه. انسخ رمز الكود كما يلي:
<%
sBASE_64_CHARACTERS = ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
sBASE_64_CHARACTERS = strUnicode2Ansi(sBASE_64_CHARACTERS)
الدالة strUnicodeLen(asContents)
'احسب طول ترميز Ansi لسلسلة Unicode
asContents1=a&asContents
لين1=لين(asContents1)
ك = 0
لأني = 1 إلى len1
تصاعدي = تصاعدي (منتصف (asContents1، ط، 1))
إذا كان asc1<0 ثم asc1=65536+asc1
إذا تصاعدي> 255 ثم
ك=ك+2
آخر
ك=ك+1
نهاية إذا
التالي
strUnicodeLen=k-1
وظيفة النهاية
الدالة strUnicode2Ansi(asContents)
'تحويل السلسلة المشفرة بـ Unicode إلى سلسلة مشفرة بـ Ansi
strUnicode2Ansi=
len1=len(asContents)
لأني = 1 إلى len1
varchar=mid(asContents,i,1)
فاراسك = تصاعدي (فارشار)
إذا كان varasc<0 فإن varasc=varasc+65536
إذا فاراسك> 255 ثم
varHex=Hex(varasc)
فارلو = يسار (فارهيكس، 2)
varhigh=يمين(varHex,2)
strUnicode2Ansi=strUnicode2Ansi & chrb(&H & varlow ) & chrb(&H & varhigh )
آخر
strUnicode2Ansi=strUnicode2Ansi & chrb(varasc)
نهاية إذا
التالي
وظيفة النهاية
الدالة strAnsi2Unicode(asContents)
'تحويل سلسلة مشفرة Ansi إلى سلسلة مشفرة Unicode
strAnsi2Unicode =
len1=lenb(asContents)
إذا len1=0 ثم اخرج من الوظيفة
لأني = 1 إلى len1
varchar=midb(asContents,i,1)
فاراسك = تصاعدي (فارشار)
إذا فاراسك> 127 ثم
strAnsi2Unicode = strAnsi2Unicode & chr(ascw(midb(asContents,i+1,1) & varchar))
ط=ط+1
آخر
strAnsi2Unicode = strAnsi2Unicode & مركز حقوق الإنسان (فاراسك)
نهاية إذا
التالي
وظيفة النهاية
الدالة Base64encode(كمحتويات)
'Base64 يقوم بتشفير السلسلة المشفرة بـ Ansi
'asContents يجب أن تكون سلسلة مشفرة ANSI (السلاسل الثنائية مقبولة أيضًا)
خافت الموقف
خافتة النتيجة
خافت Char1
خافت Char2
ديم شار3
خافت Char4
خافت بايت1
خافت بايت2
خافت بايت3
خافت SaveBits1
خافت SaveBits2
خافت lsGroupBinary
خافت lsGroup64
خافت m4، len1، len2
len1=لينب(asContents)
إذا len1<1 ثم
Base64encode=
وظيفة الخروج
نهاية إذا
m3=Len1 مود 3
إذا كان M3 > 0 ثم asContents = asContents & String(3-M3, chrb(0))
'يتم استخدام الأرقام التكميلية لتسهيل العمليات الحسابية
إذا m3> 0 ثم
لين1=لين1+(3-م3)
لين2=لين1-3
آخر
len2=len1
نهاية إذا
lsالنتيجة=
من أجل lnPosition = 1 إلى len2 الخطوة 3
lsGroup64 =
lsGroupBinary = Midb(asContents, lnPosition, 3)
Byte1 = Ascb(Midb(lsGroupBinary, 1, 1)): SaveBits1 = Byte1 و3
Byte2 = Ascb(Midb(lsGroupBinary, 2, 1)): SaveBits2 = Byte2 و15
Byte3 = Ascb(Midb(lsGroupBinary, 3, 1))
Char1 = Midb(sBASE_64_CHARACTERS، ((Byte1 و 252) / 4) + 1، 1)
Char2 = Midb(sBASE_64_CHARACTERS, (((Byte2 و240) / 16) أو (SaveBits1 * 16) و&HFF) + 1, 1)
Char3 = Midb(sBASE_64_CHARACTERS, (((Byte3 و192) / 64) أو (SaveBits2 * 4) و&HFF) + 1, 1)
Char4 = Midb(sBASE_64_CHARACTERS، (Byte3 و 63) + 1، 1)
lsGroup64 = Char1 & Char2 & Char3 & Char4
lsResult = lsResult & lsGroup64
التالي
'معالجة الأحرف الأخيرة المتبقية
إذا M3> 0 ثم
lsGroup64 =
lsGroupBinary = Midb(asContents, len2+1, 3)
Byte1 = Ascb(Midb(lsGroupBinary, 1, 1)): SaveBits1 = Byte1 و3
Byte2 = Ascb(Midb(lsGroupBinary, 2, 1)): SaveBits2 = Byte2 و15
Byte3 = Ascb(Midb(lsGroupBinary, 3, 1))
Char1 = Midb(sBASE_64_CHARACTERS، ((Byte1 و 252) / 4) + 1، 1)
Char2 = Midb(sBASE_64_CHARACTERS, (((Byte2 و240) / 16) أو (SaveBits1 * 16) و&HFF) + 1, 1)
Char3 = Midb(sBASE_64_CHARACTERS, (((Byte3 و192) / 64) أو (SaveBits2 * 4) و&HFF) + 1, 1)
إذا كان M3 = 1 إذن
lsGroup64 = Char1 & Char2 & ChrB(61) & ChrB(61) 'استخدم = علامة لملء الأرقام
آخر
lsGroup64 = Char1 & Char2 & Char3 & ChrB(61) 'استخدم = علامة لتكوين الأرقام
نهاية إذا
lsResult = lsResult & lsGroup64
نهاية إذا
Base64encode = lsResult
وظيفة النهاية
وظيفة Base64decode (كمحتويات)
'تحويل السلسلة المشفرة Base64 إلى سلسلة مشفرة Ansi
'asContents يجب أن تكون أيضًا سلسلة مشفرة بواسطة ANSI (السلاسل الثنائية مقبولة أيضًا)
خافتة النتيجة
خافت الموقف
خافت lsGroup64، lsGroupBinary
ديم Char1، Char2، Char3، Char4
خافت بايت 1، بايت 2، بايت 3
خافت M4، len1، len2
len1= Lenb(كمحتويات)
M4 = لين1 مود 4
إذا كان len1 <1 أو M4> 0
"يجب أن يكون طول السلسلة مضاعفًا للرقم 4."
Base64decode=
وظيفة الخروج
نهاية إذا
'تحديد ما إذا كان الرقم الأخير هو = علامة
'حدد ما إذا كان الرقم قبل الأخير هو = علامة
'هنا يمثل m4 آخر عدد متبقي من الأحرف التي يجب معالجتها بشكل منفصل
إذا midb(asContents, len1, 1) = chrb(61) ثم m4=3
إذا midb(asContents, len1-1, 1) = chrb(61) ثم m4=2
إذا m4 = 0 ثم
len2=len1
آخر
len2=len1-4
نهاية إذا
بالنسبة لـ lnPosition = 1 إلى Len2 الخطوة 4
lsGroupBinary =
lsGroup64 = Midb(asContents, lnPosition, 4)
Char1 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 1, 1)) - 1
Char2 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 2, 1)) - 1
Char3 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 3, 1)) - 1
Char4 = InStrb(sBASE_64_CHARACTERS، Midb(lsGroup64, 4, 1)) - 1
Byte1 = Chrb(((Char2 و48) / 16) أو (Char1 * 4) و&HFF)
Byte2 = lsGroupBinary & Chrb(((Char3 و60) / 4) أو (Char2 * 16) و&HFF)
Byte3 = Chrb((((Char3 و 3) * 64) و &HFF) أو (Char4 و 63))
lsGroupBinary = Byte1 وByte2 وByte3
lsResult = lsResult & lsGroupBinary
التالي
'معالجة الأحرف الأخيرة المتبقية
إذا M4 > 0 ثم
lsGroupBinary =
lsGroup64 = Midb(asContents, len2+1, m4) & chrB(65) 'chr(65)=A، تم تحويله إلى القيمة 0
إذا كان M4 = 2، فقم بإضافة 4 أرقام لتسهيل الحساب
lsGroup64 = lsGroup64 & chrB(65)
نهاية إذا
Char1 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 1, 1)) - 1
Char2 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 2, 1)) - 1
Char3 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 3, 1)) - 1
Char4 = InStrb(sBASE_64_CHARACTERS, Midb(lsGroup64, 4, 1)) - 1
Byte1 = Chrb(((Char2 و48) / 16) أو (Char1 * 4) و&HFF)
Byte2 = lsGroupBinary & Chrb(((Char3 و60) / 4) أو (Char2 * 16) و&HFF)
Byte3 = Chrb((((Char3 و 3) * 64) و &HFF) أو (Char4 و 63))
إذا كان M4 = 2 إذن
lsGroupBinary = Byte1
وإلاسيف M4=3 إذن
lsGroupBinary = Byte1 وByte2
نهاية إذا
lsResult = lsResult & lsGroupBinary
نهاية إذا
Base64decode = lsResult
وظيفة النهاية
%>