最近在做加解密这块的开发,使用频率更高的就是 Nodejs 的 crypto 模块了,中心泛起了很多种差别的编码方式。一直对这些编码方式处于熟练拼写的状态,然则到底有什么区别处于一知半解,借此机会正好整理下这之间的关系。
这个应该不用先容了,在计算机中,所有的数据在存储和运算时都要使用二进制数示意(由于计算机用高电平和低电平划分示意1和0)。每一个二进制位( bit )有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节( byte )。
由于计算机处置的数据是用二进制示意,例如,像a、b、c、d这样的52个字母(包罗大写)以及0、1等数字另有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来示意,而具体用哪些二进制数字示意哪个符号,固然每个人都可以约定自己的一套(这就叫编码),而人人若是要想相互通讯而不造成杂乱,那么人人就必须使用相同的编码规则,于是美国有关的尺度化组织就出台了 ASCII 编码,统一划定了常用符号用哪些二进制数来示意。
ASCII 码一共划定了128个字符的编码, 字符 ascii 码对照表 。这128个符号(包罗32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的一位统一划定为0。
由于计算机只能处置二进制,若是要处置文本,就必须先把文本转换为二进制才气处置。最早的计算机在设计时接纳8个比特( bit )作为一个字节( byte ),以是,一个字节能示意的更大的整数就是255(二进制11111111 = 十进制255),0 - 255被用来示意大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,好比大写字母A的编码是65,小写字母z的编码是122。 若是要示意中文,显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,以是,中国制订了 GB2312 编码,用来把中文编进去。 类似的,日文和韩文等其他语言也有这个问题。为了统一所有文字的编码, Unicode 应运而生。 Unicode 把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
UTF-8(8-bit Unicode Transformation Format) 是一种针对 Unicode 的可变长度字符编码,又称万国码,由 Ken Thompson 于1992年建立。现在已经尺度化为 RFC 3629 。UTF-8用1到6个字节编码 Unicode 字符。用在网页上可以统一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。
UTF-8 编码规则:若是只有一个字节则其更高二进制位为0;若是是多字节,其之一个字节从更高位更先,延续的二进制位值为1的个数决议了其编码的字节数,其余各字节均以10开头。 UTF-8 转换表示意如下:
0000 0000-0000 007F |
0~7 |
0xxxxxxx |
1 |
0000 0080-0000 07FF |
8~11 |
110xxxxx 10xxxxxx |
2 |
0000 0800-0000 FFFF |
12~16 |
1110xxxx 10xxxxxx 10xxxxxx |
3 |
0001 0000-0010 FFFF |
17~21 |
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx |
4 |
所谓 Base64 ,就是选出64个字符: 小写字母 a-z 、大写字母 A-Z 、数字0-9、符号"+"、"/"(再加上作为垫字的"=",实际上是65个字符)作为一个基本字符集。然后,其他所有符号都转换成这个字符集中的字符。
具体来说,转换方式可以分为四步。
若是只有两个字节 根据上面的规则,将16位划分为三组,最后一组除了前面加一组00,末尾也加一组00,根据索引表获得编码值后,在末尾加上一个 = .
若是只有一个字节 根据上面的规则,将8位划分为两组,最后一组除了前面加00,末尾加两组00,根据索引表获得编码值后,在末尾加上两个 = .
Base64 编码索引表 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
十六进制的简写, 在数学中是一种逢16进1的进位制。一样平常用数字0到9和字母A到F示意,其中:A~F 相当于十进制的 10~15 ,这些称作十六进制数字。 例如十进制数57,在二进制写作111001,在16进制写作39。
1.阿里云: 本站现在使用的是阿里云主机,平安/可靠/稳固。点击领取2000米代金券、领会最新阿里云产物的种种优惠流动点击进入
如今许多加盟商都很是看好黄家面馆加盟项目标成长,黄家面馆加盟项目在市场上创立多年,品牌形象早就已经深入到人心了,深受宽大消费者的喜爱与追捧,选择加盟这样一个好的加盟项目照旧很重要的,假如你对黄家面馆加...
怎样学钢琴(巧练钢琴的几种方法) 1慢练 慢练尤如‘放大镜’把乐曲中的一切细节都扩大了,使演奏者能谨慎地注意音乐的每一个细胞。 慢练是克服一切技术障碍之本。慢练的最大优点是来得及想,来得及准...
最先进到到手机上的随意提示框,点一下文本框唤醒键入电脑键盘,点一下左边的莱单标志,挑选更多设置,页面设定,点一下调节电脑键盘,依据要求,带动箭头符号,进行就可以取得成功调整电脑键盘尺寸。 知名品牌型号...
为什么人在下雨天会睡得更香?5月23日蚂蚁庄园小课堂答案是什么呢?相信很多网友还不知道吧,下面就由小编给大家说说,希望能帮到网友顺利领取180克饲料。 问题:为什么人在下雨天会睡得更香? 正确...
有些人在睡觉时会发出咯咯的响声,就像在咀嚼食物一样,这就是磨牙?可不要小看夜间磨牙,这可能是身体的疾病信号。那么在夜间磨牙的具体原因到底有哪些呢?下面为大家介绍一下。 夜磨牙与三大因素有关:心理因素...
最近天气变化太大,很多人都不小心感冒了,不过这种流行性感冒会肚子痛吗,有一些患者表示自己得流感后肚子有点不舒服,那么乙型流感和肚子痛有关联吗,为什么会肚子痛呢,友谊长存小编为大家带来了相关的解答。...