base64:把二进制数据用64个可打印的字符表示,包括可打印的和不可打印的。由于2^6=64,所以6个bit为一组,对应某个可打印字符。三个字节有24个bit,对应24/6=4个base64单元。这64个可打印字符是:
<pre>
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
</pre>
分别对应:0、1、2、3、4……63
转换过程:把3个byte的数据,放入一个24bit的缓冲区。先来的byte占高位,如果不足3byte,缓冲区剩下的bit用0补足。每次取出6个bit,按照它的值选择64个字符中的一个作为编码后的输出,直到全部输入数据转换完成。
栗子:一串二进制数据:001010101101,6个bit为一组,(001010)(101101),分别是10、46,对应字符中的第10、46个,因此这串数字编码后的输出是Ku。
当原数据长度不是3的整数倍时, 如果最后剩下一个输入数据,在编码结果后加2个“=”;如果最后剩下两个输入数据,编码结果后加1个“=”;如果没有剩下任何数据,就什么都不要加,这样做的目的是区分二进制数据最后一位或2位的0是原始数据的0还是为了编码补的0。
hash:
就是把任意长度的输入,通过散列算法,变换成固定长度的输出,这个输出就是hash值,主要作用是校验数据的正确性,不可逆,即:可以通过hash算法把字符串变成固定长度的输出,但是不能根据hash值反解出原来的字符串。
hash算法的几种实现:
md5、md4:输入不定长度信息,输出固定长度128-bits的算法。经过程序流程,生成四个32位数据,最后联合起来成为一个128-bits散列。md5主要用途:在为文件传输提供一定的可靠性,比如:服务器先提供一个文件的md5校验和,用户下载完文件之后,用md5算一下这个文件,和服务器提供的md5做对比,如果一致,表示文件下载正确。
SHA:又叫安全散列算法,是一种能计算出一个数字消息所对应到的,长度固定的字符串的算法。且若输入的消息不同,它们对应到不同字符串的概率很高。
网友评论