加密算法-BASE64

基本的单向加密算法:

1.BASE64 ——严格地说,属于编码格式,而非加密算法

2.MD5——Message Digest algorithm 5,信息摘要算法

3.SHA——Secure Hash Algorithm,安全散列算法

4.HMAC——Hash Message Authentication Code,散列消息鉴别码

        MD5、SHA、HMAC这三种加密算法,可谓是非可逆加密,就是不可解密的加密方法。我们通常只把他们作为加密的基础。单纯的以上三种的加密并不可靠。 

1.BASE64

简介

是网络上最常见的额用于传输8bit字节代码的编码方式之一。BASE64编码可用于在HTTP环境下传递较长的标识信息。

BASE64编码可以讲任意一组字节转换为较长的常见文本字符序列,从而能可以合法地作为首部字段值。它是将用户输入的二进制数据,打包成一种安全格式,将其作为http首部字段的值发送出去,而无须担心其中包含会破坏HTTP分析程序的冒号、换行符或二进制值。BASE64是作为MIME多媒体电子邮件标准的一部分开发的。BASE64 编码与将二进制数据文本化的uuencode和binhex标准在本质上是类似的,但是空间效率更高。

实现原理

Base-64编码将一个8位子节序列拆散为6位的片段,并为每个6位的片短分配一个字符,这个字符是Base-64字母表中的64个字符之一。这64个输出字符都是很常见的,可以安全地放在HTTP首部字段中。

由于base64编码用了8位字符来表示信息中的6个位,所以base64编码字符串大约比原始值扩大了33%。

关于这个编码的规则:

①.把3个字符变成4个字符。
②每76个字符加一个换行符。
③.最后的结束符也要处理。

示例:

(1)几个字符组成的输入值“Ow!”是base64编码的,得到的是4个字符的base64编码值“T3ch”。它是按以下方式工作的。

(1) 字符串"Ow!"被拆分成3个8位的字节(0x4F、0x77、0x21)。

(2) 这3个字节构成了一个24为的二进制01001111 01110111 00100001。

(3) 这些为被划分为一些6位的序列010011、110111、011100、1000001.

(4) 每个6位值都表示了从0~63之间的数字,对应base64字母表中的64个字符之一。得到的base64编码字符串是4个字符的字符串“T3ch”。然后就可以通过线路将这个字符串作为“安全的”8位字符传送出去,因为只用了一些移植性最好的字符(字母、数字等)。

(2)一个不明白就再来一个

转换前 11111111, 11111111, 11111111 (二进制)
转换后 00111111, 00111111, 00111111, 00111111 (二进制)
上面的三个字节是原文,下面的四个字节是转换后的Base64编码,其前两位均为0。
转换后,我们用一个码表来得到我们想要的字符串(也就是最终的Base64编码),这个表是这样的:(摘自RFC2045)
转换表
Table 1: The Base64 Alphabet

索引
对应字符
索引
对应字符
索引
对应字符
索引
对应字符
0
A
17
R
34
i
51
z
1
B
18
S
35
j
52
0
2
C
19
T
36
k
53
1
3
D
20
U
37
l
54
2
4
E
21
V
38
m
55
3
5
F
22
W
39
n
56
4
6
G
23
X
40
o
57
5
7
H
24
Y
41
p
58
6
8
I
25
Z
42
q
59
7
9
J
26
a
43
r
60
8
10
K
27
b
44
s
61
9
11
L
28
c
45
t
62
+
12
M
29
d
46
u
63
/
13
N
30
e
47
v


14
O
31
f
48
w


15
P
32
g
49
x


16
Q
33
h
50
y

 很多下载类网站都提供“迅雷下载”的链接,其地址通常是加密的迅雷专用下载地址。其实迅雷的“专用地址”也是用Base64"加密"的,其过程如下:
一、在地址的前后分别添加AA和ZZ
二、对新的字符串进行Base64编码
另: Flashget的与迅雷类似,只不过在第一步时加的“料”不同罢了,Flashget在地址前后加的“料”是[FLASHGET]
而QQ旋风的干脆不加料,直接就对地址进行Base64编码了。

转载:点击打开链接








  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值