Base 64 인 코딩 소개,Base 64 인 코딩 변환 원리 와 알고리즘
Base 64 변환 원리 실현
바 이 너 리 의 모든 데 이 터 를 인쇄 할 수 있 는 64 개의 문자 로 표시 합 니 다.2 의 6 제곱 은 64 이기 때문에 6 비트 마다 하나의 단원 으로 인쇄 가능 한 문자 에 대응 할 수 있 습 니 다.우 리 는 세 바이트 에 24 개의 비트 가 있다 는 것 을 알 고 있 으 며,4 개의 Base 64 단원,즉 3 개의 바이트 에 4 개의 Base 64 의 인쇄 가능 한 문자 로 표시 할 수 있다.Base 64 에서 인쇄 가능 한 문 자 는 알파벳 A-Z,a-z,숫자 0-9 를 포함 하 는데 모두 62 개의 문자 가 있 고 그 밖 에 두 개의 인쇄 가능 한 기 호 는 서로 다른 시스템 에서 일반적으로 다르다.그러나 우리 가 자주 말 하 는 Base 64 의 다른 두 문 자 는'+/'이다.이 64 글자 에 대응 하 는 표 는 다음 과 같다.
번호
문자
번호
문자
번호
문자
번호
문자
0
A
16
Q
32
g
48
w
1
B
17
R
33
h
49
x
2
C
18
S
34
i
50
y
3
D
19
T
35
j
51
z
4
E
20
U
36
k
52
0
5
F
21
V
37
l
53
1
6
G
22
W
38
m
54
2
7
H
23
X
39
n
55
3
8
I
24
Y
40
o
56
4
9
J
25
Z
41
p
57
5
10
K
26
a
42
q
58
6
11
L
27
b
43
r
59
7
12
M
28
c
44
s
60
8
13
N
29
d
45
t
61
9
14
O
30
e
46
u
62
+
15
P
31
f
47
v
63
/
Base 64 인 코딩 변환 알고리즘,변환 원리
변환 할 때 세 개의 byte 데 이 터 를 24bit 버퍼 에 넣 고 먼저 온 byte 가 높 은 위 치 를 차지 합 니 다.데이터 가 3byte 가 부족 하면 버퍼 에 남 은 bit 를 0 으로 보충 합 니 다.그리고 매번 6 개의 bit 를 꺼 내 그 값 에 따라 선택 합 니 다.
ABCDEFGHIJKLMNOPQRSTuvWXYZabcdefghijklmnopqrstuvwxyz 0123456789+/의 문 자 를 인 코딩 한 출력 으로 합 니 다.모든 입력 데이터 변환 이 완 료 될 때 까지 계속 진행 합 니 다.
마지막 으로 두 개의 입력 데이터 가 남 으 면 인 코딩 결과 에'='을 추가 합 니 다.마지막 입력 데이터 가 하나 남 으 면 결 과 를 인 코딩 한 후"="을 2 개 추가 합 니 다.데이터 가 남 아 있 지 않 으 면 아무것도 추가 하지 마라.그래 야 자료 복원 의 정확성 을 확보 할 수 있다.
인 코딩 된 데 이 터 는 원본 데이터 보다 약간 길 고 원래 의 4/3 입 니 다.어떤 문자 든 모두 인 코딩 되 기 때문에 Quoted-printable 인 코딩 과 는 달리 인쇄 가능 한 부분 이 남아 있 습 니 다.그래서 Quoted-printable 인 코딩 보다 가 독성 이 떨 어 집 니 다!
텍스트
M
a
n
ASCII 인 코딩
77
97
110
이 진 비트
0
1
0
0
1
1
0
1
0
1
1
0
0
0
0
1
0
1
1
0
1
1
1
0
인덱스
19
22
5
46
Base 64 인 코딩
T
W
F
u
M 의 Ascii 코드 는 77 이 고 앞의 6 자리 대응 치 는 19 이 며 base 64 문 자 는 T 로 유추 된다.다른 문자 인 코딩 은 자동 으로 변환 할 수 있 습 니 다!그리고 딱 3 바이트 가 아 닌 상황 을 살 펴 보 자!
텍스트(1 바이트)
A
이 진 비트
0
1
0
0
0
0
0
1
바 이 너 리(0 보충)
0
1
0
0
0
0
0
1
0
0
0
0
Base 64 인 코딩
Q
Q
=
=
텍스트(2 바이트)
B
C
이 진 비트
0
1
0
0
0
0
1
0
0
1
0
0
0
0
1
1
x
x
x
x
x
x
바 이 너 리(0 보충)
0
1
0
0
0
0
1
0
0
1
0
0
0
0
1
1
0
0
x
x
x
x
x
x
Base 64 인 코딩
Q
k
M
=
Base 64 변환 코드 구현
방법 을 알 았 으 니 우리 가 직접 간단 한 전환 을 쓰 는 것 도 쉬 운 것 같 습 니 다!다음은 제 가 phop 코드 를 바 꾸 겠 습 니 다!
/**
*base64 、 base64 ,
*@author
*@copyright http://blog.chacuo.net
*@param $src
*@return string base64 *
*/
function c_base64_encode($src)
{
static $base="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
//// 3 4
$slen=strlen($src);
$smod = ($slen%3);
$snum = floor($slen/3);
$desc = array();
for($i=0;$i<$snum;$i++)
{
//// 3
$_arr = array_map('ord',str_split(substr($src,$i*3,3)));
/// base64
$_dec0= $_arr[0]>>2;
$_dec1= (($_arr[0]&3)<<4)|($_arr[1]>>4);
$_dec2= (($_arr[1]&0xF)<<2)|($_arr[2]>>6);
$_dec3= $_arr[2]&63;
$desc = array_merge($desc,array($base[$_dec0],$base[$_dec1],$base[$_dec2],$base[$_dec3]));
}
if($smod==0) return implode('',$desc);
/// 3
$_arr = array_map('ord',str_split(substr($src,$snum*3,3)));
$_dec0= $_arr[0]>>2;
///
if(!isset($_arr[1]))
{
$_dec1= (($_arr[0]&3)<<4);
$_dec2=$_dec3="=";
}
else
{
///2
$_dec1= (($_arr[0]&3)<<4)|($_arr[1]>>4);
$_dec2= $base[($_arr[1]&7)<<2];
$_dec3="=";
}
$desc = array_merge($desc,array($base[$_dec0],$base[$_dec1],$_dec2,$_dec3));
return implode('',$desc);
}
자,이 예 를 통 해 base 64 인 코딩 변환 원리,알고리즘 에 대해 좀 알 고 있 는 것 같 습 니 다!그것 의 전환 과정 은 매우 간단 하 다.매 핑 표를 만 든 후에 원래 의 자리 옮 기 는 연산 을 하면 완성 할 수 있다!우 리 는 이 예 를 통 해 자신의 base 32 와 같은 인 코딩 을 할 수 있 습 니까?여러분 의 교 류 를 환영 합 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
암호화 해독 Base64 및 URL 및 Hex 인코딩 및 디코딩 정보오늘은 Discuz 포럼의 스타일을 바꾸고 싶습니다. 스타일 파일을 다운로드한 후에 Base64를 통해 암호화된 샤오린이 복호화 페이지를 추천해 주었습니다. 코드를 추출하면 다음과 같습니다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.