二进制安全是什么意思?

二进制安全是指,在传输数据时,保证二进制数据的信息安全,也就是不被篡改、破译等,若是被攻击,可以及时检测出来。
二进制安全包含了密码学的一些东西,好比加解密、签名等。

举个例子,你把数据11110000加密成10001000,而后传给我,就是一种二进制安全的作法。


redis中的二进制安全:
二进制安全

C字符串中的字符必须符合某种编码(好比ASCII),而且除了字符串的末尾以外,字符串里面不能包含空字符,不然最早被程序读入的空字符将被误认为是字符串结尾,这些限制使得C字符串只能保存文本数据,而不能保存像图片、音频、视频、压缩文件这样的二进制数据。redis

举个例子,若是有一种使用空字符来分割多个单词的特殊数据格式,如图2-17所示,那么这种格式就不能使用C字符串来保存,由于C字符串所用的函数只会识别出其中的"Redis",而忽略以后的"Cluster"。数据库

 

虽然数据库通常用于保存文本数据,但使用数据库来保存二进制数据的场景也很多见,所以,为了确保Redis能够适用于各类不一样的使用场景,SDS的 API都是二进制安全的(binary-safe),全部SDS API都会以处理二进制的方式来处理SDS存放在buf数组里的数据,程序不会对其中的数据作任何限制、过滤、或者假设,数据在写入时是什么样的,它被读 取时就是什么样。数组

这也是咱们将SDS的buf属性称为字节数组的缘由——Redis不是用这个数组来保存字符,而是用它来保存一系列二进制数据。安全

例如,使用SDS来保存以前提到的特殊数据格式就没有任何问题,由于SDS使用len属性的值而不是空字符来判断字符串是否结束,如图2-18所示。函数

经过使用二进制安全的SDS,而不是C字符串,使得Redis不只能够保存文本数据,还能够保存任意格式的二进制数据。
  编码

相关文章
相关标签/搜索