때로는 누구나 Base64 암호화 및 복호화를 즐깁니다. 다음은 필요한 친구가 참조할 수 있는 구체적인 구현 코드입니다. 다음과 같이 코드 코드를 복사합니다.
<%
sBASE_64_CHARACTERS = ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
sBASE_64_CHARACTERS = strUnicode2Ansi(sBASE_64_CHARACTERS)
함수 strUnicodeLen(asContents)
'유니코드 문자열의 Ansi 인코딩 길이를 계산합니다.
asContents1=a&as콘텐츠
len1=len(asContents1)
k=0
i=1부터 len1까지
asc1=asc(mid(asContents1,i,1))
asc1<0이면 asc1=65536+asc1
asc1>255이면
k=k+2
또 다른
k=k+1
종료하면
다음
strUnicodeLen=k-1
기능 종료
함수 strUnicode2Ansi(asContents)
'유니코드로 인코딩된 문자열을 Ansi로 인코딩된 문자열로 변환
strUnicode2Ansi=
len1=len(컨텐츠로)
i=1부터 len1까지
varchar=mid(asContents,i,1)
varasc=asc(varchar)
varasc<0이면 varasc=varasc+65536
varasc>255이면
varHex=16진수(varasc)
varlow=왼쪽(varHex,2)
varhigh=오른쪽(varHex,2)
strUnicode2Ansi=strUnicode2Ansi & chrb(&H & varlow ) & chrb(&H & varhigh )
또 다른
strUnicode2Ansi=strUnicode2Ansi & chrb(varasc)
종료하면
다음
기능 종료
함수 strAnsi2Unicode(asContents)
'Ansi로 인코딩된 문자열을 유니코드로 인코딩된 문자열로 변환
strAnsi2Unicode =
len1=lenb(컨텐츠)
len1=0이면 함수를 종료합니다.
i=1부터 len1까지
varchar=midb(asContents,i,1)
varasc=ascb(varchar)
varasc > 127이면
strAnsi2Unicode = strAnsi2Unicode & chr(ascw(midb(asContents,i+1,1) & varchar))
나=나+1
또 다른
strAnsi2Unicode = strAnsi2Unicode & chr(varasc)
종료하면
다음
기능 종료
기능 Base64encode(asContents)
'Ansi로 인코딩된 문자열을 Base64로 인코딩합니다.
'asContents는 ANSI로 인코딩된 문자열이어야 합니다(바이너리 문자열도 허용됨)
희미한 위치
희미한 lsResult
희미한 문자1
희미한 Char2
희미한 Char3
희미한 Char4
희미한 바이트1
희미한 바이트2
희미한 바이트3
희미한 SaveBits1
희미한 SaveBits2
희미한 lsGroupBinary
희미한 lsGroup64
희미한 m4,len1,len2
len1=Lenb(컨텐츠로)
len1<1이면
Base64인코드=
종료 기능
종료하면
m3=Len1 Mod 3
M3 > 0이면 asContents = asContents & String(3-M3, chrb(0))
'계산을 용이하게 하기 위해 보조 숫자가 사용됩니다.
m3 > 0이면
len1=len1+(3-m3)
len2=len1-3
또 다른
len2=len1
종료하면
ls결과=
lnPosition = 1의 경우 len2로 3단계
ls그룹64 =
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, ((바이트1 및 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, (바이트3 및 63) + 1, 1)
lsGroup64 = Char1 & Char2 & Char3 & Char4
lsResult = lsResult & lsGroup64
다음
'마지막 남은 문자 처리
M3 > 0이면
ls그룹64 =
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, ((바이트1 및 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(asContents)
'Base64로 인코딩된 문자열을 Ansi로 인코딩된 문자열로 변환
'asContents는 ANSI로 인코딩된 문자열이어야 합니다(바이너리 문자열도 허용됨).
희미한 lsResult
희미한 위치
희미한 lsGroup64, lsGroupBinary
희미한 Char1, Char2, Char3, Char4
희미한 바이트1, 바이트2, 바이트3
희미한 M4,len1,len2
len1= Lenb(컨텐츠로)
M4 = len1 Mod 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이면
len2=len1
또 다른
len2=len1-4
종료하면
lnPosition = 1에서 Len2로 4단계
ls그룹바이너리 =
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 And 60) / 4) Or (Char2 * 16) And &HFF)
Byte3 = Chrb((((Char3 및 3) * 64) 및 &HFF) 또는 (Char4 및 63))
lsGroupBinary = 바이트1 & 바이트2 & 바이트3
lsResult = lsResult & lsGroupBinary
다음
'마지막 남은 문자 처리
M4 > 0이면
ls그룹바이너리 =
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 And 60) / 4) Or (Char2 * 16) And &HFF)
Byte3 = Chrb((((Char3 및 3) * 64) 및 &HFF) 또는 (Char4 및 63))
M4=2이면
lsGroupBinary = 바이트1
elseif M4=3이면
lsGroupBinary = 바이트1 및 바이트2
종료하면
lsResult = lsResult & lsGroupBinary
종료하면
Base64decode = lsResult
기능 종료
%>