由于想在Linux上从迅雷里下东西,所以遇到了base64,顺便了解了一下。简单来说(不一定准确):base64是一个可以将二进制数据转化成[A-Za-z0-9+/]的字符串,常用于网页、邮件。
通常一个网页下载下来,离线打开,你可能会发现网页上的图片还在。但你搜遍整个网页都没有打到对应的二进制数据。原来是图片数据被转换成文本的形式。
base64的原理是将每3个字节用4个可打印的字符来表示。网上有很多原理的介绍:维基百科。
我自己用自己的话来描述一下这个过程:每次取3个字节出来,组成一个24bits的数据(每个字节8bits*3=24bits)。再将这24bits的数据以6bits为一组分隔成4个组。每一组的数值范围为0~63。然后用"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"这64个字符来表示这个值。当然,按3个字节拆分,到最后来肯定会有不足3个的情况,那就填0再计算。在编码完成之后,用“=”的个数来表示最后是剩下的是一个字节还是两个字节或是没有剩。
原理介绍到这里,下面讲一下base64命令的使用方法:
加密字串:
$ echo -n "Hi, I am Hevake Lee" | base64
加密文件
$ base64 photo.jpg
命令执行完成后会在标准输出打印加密后的字串。如果需要保存,你是可以重定位到文件的。如:
$ base64 photo.jpg > photo.jpg.b64
解密方法与加密方法是一样的,只不过base64加一个'-d'参数表示解码。