密码学系列 - DER编码

DER(Distinguished Encoding Rules,可辨别编码规则)
DER 广泛用于X.509等数字证书。PEM文件 是Base64编码的DER证书

ASN.1编码格式:

  • 基本编码规则(BER)
  • 规范编码规则(CER)
  • 可分辨编码规则(DER)

BER 编码

基本编码规则的格式指定了用于编码 ASN.1 数据结构的自描述和自定界格式。每个数据元素都被编码为类型标识符、长度描述、实际数据元素以及必要时的内容结束标记。这些类型的编码通常称为类型-长度-值(TLV) 编码。这种格式允许接收器从不完整的流中解码 ASN.1 信息,而无需预先了解数据的大小、内容或语义含义。

编码结构

数据的编码通常由按以下顺序出现的四个部分组成:

Identifier八位字节 类型Length八位字节 长度Contents八位字节 End-of-contents八位字节

End-of-contents八位字节是可选的,仅在使用不定长形式时才使用。如果没有像 NULL 类型那样编码的内容,也可以省略 Contents八位字节。

CER 编码

CER(规范编码规则)是BER的受限变体,用于为ASN.1描述的数据结构生成明确的传输语法。BER 可以选择如何编码数据值,而 CER(与DER一起)仅从基本编码规则允许的编码中选择一种编码,消除了其余选项。当必须保留编码时,CER 很有用;例如,在证券交易中。

DER 编码

DER(可分辨编码规则)是BER的受限变体,用于为ASN.1描述的数据结构生成明确的传输语法。与CER一样,DER 编码是有效的 BER 编码。DER 与 BER 相同,但删除了一个发送者的选项。

DER 是 BER 的一个子集,提供了一种编码 ASN.1 值的方法。DER 适用于需要唯一编码的情况,例如在密码学中,并确保需要数字签名的数据结构产生唯一的序列化表示。DER 可以被认为是BER的规范形式。例如,在 BER 中,布尔值 true 可以编码为 255 个非零字节值中的任何一个,而在 DER 中,有一种方法可以对布尔值 true 进行编码。

最重要的 DER 编码约束

  1. 长度编码必须使用定型
    • 此外,必须使用尽可能短的长度编码
  2. 位串、八位组串和受限字符串必须使用原始编码
  3. Set 的元素根据它们的标签值按排序顺序编码

例子

下面是SSLDocument给出的对一个对象进行DER编码的例子。 例子使用的对象是ASN.1定义的BIT STRING类型的对象,其编码的步骤如下:

  1. 对位串使用"0"进行填补,使其长度为8的整数倍(如果已经是整数倍,则不需要进行填补);
  2. 计算填补的位数并写下来,成为数据内容的第一个字节;
  3. 写入填补后的位串,高位字节优先。这些数据跟前面的一个字节组成数据内容的全部字节;
  4. 在这些数据前面加上一个头字节

下面是一个实际的数据例子:
位串:‘01000100111011’

  1. 补齐两个0在后面,成为8的整数倍,得到’0100010011101100’;
  2. '02’作为第一个数据内容的字节;
  3. '44 ec’作为其余的数据内容的字节;
  4. '03’作为前面的对象标识字节;
  5. 因为BIT STRING的tag值3<=127,所以只有一个字节的长度域’03’;
    那么得到的这个位串的DER编码就是03 03 02 44 ec,其中,第一个字节是对象标识域,第二个字节是数据长度域,其他为数据域。

往期精彩回顾:
区块链知识系列
密码学系列
零知识证明系列
共识系列
公链调研系列
比特币系列
以太坊系列
EOS系列
Filecoin系列
联盟链系列
Fabric系列
智能合约系列
Token系列
  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搬砖魁首

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值