为什么openssl以大端格式运行?

时间:2018-04-04 12:22:38

标签: openssl cryptography endianness

大端的特定优势还是小端的限制?

2 个答案:

答案 0 :(得分:1)

一般来说,电线上的东西"在芯片上使用big endian和#34;"做任何芯片想做的事情(或做很多工作来解决芯片想要的东西)。

OpenSSL的主要输入/输出流是DER(或BER)编码的ASN.1数据结构。 BER编码系列使用big-endian,因为它主要设计为有线/互操作格式。由于主流是大端,因此在big-endian中导入和导出的中间数据结构(如BN)使得DER导入/导出更容易。他们在幕后所做的是实施细节。

相比之下,Windows CAPI最简单的密钥导入/导出API使用的专有格式(可能)设计为更容易使用,因为它的内部结构(little-endian,因为它是为x86处理器设计的) )。

在Windows密码术的改进过程中,导致Windows CNG库的导入/导出格式变为big endian。人们认为,动机更像是有线格式(以及其他库'导入/导出格式),以减少用户的混淆。

答案 1 :(得分:1)

添加到@bartonjs:

Network Byte Order是大端,请参阅RFC1700

我们写阿拉伯数字的方式是big endian,左边是最重要的数字,所以123写的是123,小端是321。

如果你把int16_t表示1000(十进制)0x03e8(十六进制)放在一个大端机器上" 0x03"在最低寻址字节和下一个更高有序字节中的0xe8,数字1000的大端是第一个。当在大端设备上的十六进制转储中显示时,它们按自然顺序0x03,0xe8。当在小端设备上的十六进制转储中显示时,它们的顺序为0xe8,0x03,并且需要在头部重新排序它们。

虽然很少有开发人员再看看十六进制转储,但有一段时间不仅经常完成,而且还需要。