Иногда всем нравится шифрование и дешифрование base64. Ниже приводится конкретный код реализации. Друзья, нуждающиеся в этом, могут обратиться к нему. Скопируйте код кода следующим образом:
<%
sBASE_64_CHARACTERS = ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
sBASE_64_CHARACTERS = strUnicode2Ansi(sBASE_64_CHARACTERS)
Функция strUnicodeLen(asContents)
'Рассчитываем длину кодировки Ansi строки Unicode
asContents1=a&asContents
len1=len(asContents1)
к=0
для я = от 1 до len1
asc1=asc(mid(asContents1,i,1))
если по возрастанию1<0, то по возрастанию1=65536+по возрастанию1
если по возрастанию1>255, то
к=к+2
еще
к=к+1
конец, если
следующий
стрUnicodeLen=k-1
Конечная функция
Функция strUnicode2Ansi(asContents)
'Преобразовать строку в кодировке Unicode в строку в кодировке Ansi
стрUnicode2Ansi=
len1=len(asContents)
для я = от 1 до len1
varchar=mid(asContents,i,1)
вараск = по возрастанию (varchar)
если varasc<0, то varasc=varasc+65536
если вараск>255, то
varHex=Hex(вараск)
варлоу = влево (varHex, 2)
varhigh = вправо (varHex, 2)
strUnicode2Ansi=strUnicode2Ansi & chrb(&H & varlow ) & chrb(&H & varhigh )
еще
strUnicode2Ansi=strUnicode2Ansi & chrb(varasc)
конец, если
следующий
Конечная функция
Функция strAnsi2Unicode(asContents)
'Преобразовать строку в кодировке Ansi в строку в кодировке Unicode
стрАнси2Юникод =
len1=lenb(asContents)
если len1=0, то выходим из функции
для я = от 1 до len1
varchar=midb(asContents,i,1)
вараск = ascb (varchar)
если вараск > 127, то
strAnsi2Unicode = strAnsi2Unicode & chr(ascw(midb(asContents,i+1,1) & varchar))
я=я+1
еще
strAnsi2Unicode = strAnsi2Unicode & chr(varasc)
конец, если
следующий
Конечная функция
Функция Base64encode(asContents)
'Base64 кодирует строку в кодировке Ansi
'asContents должна быть строкой в кодировке ANSI (двоичные строки также приемлемы)
Тусклое положение
Дим лсрезультат
Дим Чар1
Дим Чар2
Дим Чар3
Дим Чар4
Тусклый байт1
Тусклый байт2
Тусклый байт3
Тусклый SaveBits1
Тусклый SaveBits2
Dim lsGroupBinary
Дим lsGroup64
Размер m4,len1,len2
len1=Lenb(asContents)
если len1<1 тогда
Base64код =
выход из функции
конец, если
m3=Len1 Мод 3
Если M3 > 0, то asContents = asContents & String(3-M3, chrb(0))
«Дополнительные цифры используются для облегчения вычислений.
ЕСЛИ м3 > 0, ТО
лен1=лен1+(3-м3)
лен2=лен1-3
еще
лен2=лен1
конец, если
lsResult=
Для lnPosition = 1 Для len2 Шаг 3
lsGroup64 =
lsGroupBinary = Midb(asContents, lnPosition, 3)
Байт1 = Ascb(Midb(lsGroupBinary, 1, 1)): SaveBits1 = Байт1 и 3
Байт2 = Ascb(Midb(lsGroupBinary, 2, 1)): SaveBits2 = Байт2 и 15
Байт3 = Ascb(Midb(lsGroupBinary, 3, 1))
Char1 = Midb(sBASE_64_CHARACTERS, ((Байт1 и 252)/4) + 1, 1)
Char2 = Midb(sBASE_64_CHARACTERS, (((Байт2 и 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, (байт3 и 63) + 1, 1)
lsGroup64 = Символ1 и Символ2 и Символ3 и Символ4
lsResult = lsResult & lsGroup64
Следующий
'Обрабатываем последние оставшиеся символы
если М3 > 0, то
lsGroup64 =
lsGroupBinary = Midb(asContents, len2+1, 3)
Байт1 = Ascb(Midb(lsGroupBinary, 1, 1)): SaveBits1 = Байт1 и 3
Байт2 = Ascb(Midb(lsGroupBinary, 2, 1)): SaveBits2 = Байт2 и 15
Байт3 = Ascb(Midb(lsGroupBinary, 3, 1))
Char1 = Midb(sBASE_64_CHARACTERS, ((Байт1 и 252)/4) + 1, 1)
Char2 = Midb(sBASE_64_CHARACTERS, (((Байт2 и 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(asContents)
'Преобразуем строку в кодировке Base64 в строку в кодировке Ansi
'asContents также должен быть строкой в кодировке ANSI (двоичные строки также приемлемы)
Дим лсрезультат
Тусклое положение
Тусклый lsGroup64, lsGroupBinary
Тусклый Char1, Char2, Char3, Char4
Уменьшить Байт1, Байт2, Байт3
Тусклый M4,len1,len2
len1= Lenb(asContents)
M4 = длина1 Мод 4
если len1 < 1 или M4 > 0, то
'Длина строки должна быть кратна 4
Base64декод=
выход из функции
конец, если
'Определяем, является ли последняя цифра знаком =
'Определяем, является ли предпоследняя цифра знаком =
'Здесь m4 представляет собой последнее оставшееся количество символов, которые необходимо обработать отдельно.
если Midb(asContents, len1, 1) = chrb(61), то m4=3
если Midb(asContents, len1-1, 1) = chrb(61), то m4=2
если m4 = 0, то
лен2=лен1
еще
лен2=лен1-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
Байт1 = Chrb(((Char2 и 48)/16) Или (Char1 * 4) и &HFF)
Byte2 = lsGroupBinary & Chrb(((Char3 и 60)/4) или (Char2 * 16) и &HFF)
Байт3 = Chrb((((Char3 и 3) * 64) и &HFF) Или (Char4 и 63))
lsGroupBinary = Байт1, Байт2 и Байт3
lsResult = lsResult & lsGroupBinary
Следующий
'Обрабатываем последние оставшиеся символы
если М4 > 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
Байт1 = Chrb(((Char2 и 48)/16) Или (Char1 * 4) и &HFF)
Byte2 = lsGroupBinary & Chrb(((Char3 и 60)/4) или (Char2 * 16) и &HFF)
Байт3 = Chrb((((Char3 и 3) * 64) и &HFF) Или (Char4 и 63))
если M4=2, то
lsGroupBinary = Байт1
иначе, если M4=3, то
lsGroupBinary = Байт1 и Байт2
конец, если
lsResult = lsResult & lsGroupBinary
конец, если
Base64decode = lsResult
Конечная функция
%>