网易首页 > 网易号 > 正文 申请入驻

密码学的基础:X.690和对应的BER CER DER编码

0
分享至

简介

之前我们讲到了优秀的数据描述语言ASN.1,很多协议标准都是使用ASN.1来进行描述的。对于ASN.1来说,只定义了数据的描述是不够的,它还规定了消息是如何被编码的,从而可以在不同的机器中进行通讯。

ASN.1支持一系列的编码规则,比如BER,DER,CER等。而X.690就是一个ITU-T的标准,它里面包含了一些对ASN.1进行编码的规则。

有人要问了,那么什么是ITU-T呢?

ITU-T的全称是International Telecommunication Union Telecommunication Standardization Sector,也就是国际电联电信标准化部门,主要用来协调电信和信息通信技术标准。

X.690主要包含了Basic Encoding Rules (BER),Canonical Encoding Rules (CER)和Distinguished Encoding Rules (DER)这三种编码规则。

接下来,我们来看下这些编码规则的实现细节。

BER编码

BER的全称是Basic Encoding Rules,它是最早的编码规则,使用Tag-Length-Value(TLV)的格式对所有信息进行编码。

在BER中,每个数据元素都被编码为类型标识符、长度描述、实际数据元素,以及可选的内容结束标记,如下所示:

类型标识符 长度 实际数据 内容结束标记 Type Length Value 只用在不确定长度的情况

所有的编码都是以字节为单位的。

类型标识符

ASN.1的类型有下面几种,下表列出了ASN.1中类型和对应的十进制的关系:

type名称 基础类型还是组合类型 Number(十进制) End-of-Content (EOC) 基础类型 0 BOOLEAN 基础类型 1 INTEGER 基础类型 2 BIT STRING 两者皆可 3 OCTET STRING 两者皆可 4 NULL 基础类型 5 OBJECT IDENTIFIER 基础类型 6 Object Descriptor 两者皆可 7 EXTERNAL 组合类型 8 REAL (float) 基础类型 9 ENUMERATED 基础类型 10 EMBEDDED PDV 组合类型 11 UTF8String 两者皆可 12 RELATIVE-OID 基础类型 13 TIME 基础类型 14 Reserved
15 SEQUENCE and SEQUENCE OF 组合类型 16 SET and SET OF 组合类型 17 NumericString 两者皆可 18 PrintableString 两者皆可 19 T61String 两者皆可 20 VideotexString 两者皆可 21 IA5String 两者皆可 22 UTCTime 两者皆可 23 GeneralizedTime 两者皆可 24 GraphicString 两者皆可 25 VisibleString 两者皆可 26 GeneralString 两者皆可 27 UniversalString 两者皆可 28 CHARACTER STRING 组合类型 29 BMPString 组合类型 30 DATE 基础类型 31 TIME-OF-DAY 基础类型 32 DATE-TIME 基础类型 33 DURATION 基础类型 34 OID-IRI 基础类型 35 RELATIVE-OID-IRI 基础类型 36

以上就是ASN.1中的类型和对应的值。接下来我们看下这些类型是怎么进行编码的。

ASN.1都是以字节为单位的,一个字节是8bits,其中7-8bits表示的是Tag class。2个bits可以表示4种class,如下:

class value 描述 Universal 0 ASN.1的native类型 Application 1 该类型仅对一种特定应用程序有效 Context-specific 2 这种类型依赖于context Private 3

6bit表示的是这个类型是简单类型还是组合类型,简单类型用0,组合类型用1。

还剩下5个bits,可以表示32个不同的值,但是对于ASN.1来说,它的类型是超出32范围的,所以这5个bits只用来表示0-30的值的范围。如下所示:

如果想要表示超出30范围的值,那么可以使用两个byte,如下:

前面一个byte的1-5bits全部用1表示,后面一个byte的第8bit用1表示,剩下的7个bits用来表示真实的值。

长度

type编码之后就是length编码,length编码有两种格式,一种是确定长度的length,一种是不确定长度的length。

如果数据的长度是可预见的,那么我们就可以使用确定长度的编码形式,如果长度是不确定的,那么就可以使用不确定长度的编码形式。

我们看下不同类型的长度编码形式:

首先,如果是确定长度,并且长度比较短的情况下,那么在8bit位设置为0,剩下的7个bits可以表示0-127范围的长度情况。

如果长度超过了127,那么可以在8bit设置为1,并且剩下的7个bits表示的是后面存储长度的byte个数,byte个数的范围是(1-126)。

如果是非固定长度,那么在8bit位设置为1,剩下的7bits设置为0。

所有bits都设置为1的是保留值。

在非固定长度的情况下,如果内容结束之后,需要额外附加一个byte表示的End-of-Contents,用来表示非固定长度编码已经结束了。

内容

Contents是跟在长度后面的byte字段,Contents的长度可以为0,表示没有Contents内容。

总体来看BER编码,通过类型+长度+具体的内容字段来组成的。

CER编码和DER编码

CER的全称是Canonical Encoding Rules, DER的全称是Distinguished Encoding Rules,这两个编码都是从BER衍生过来的,他们都是BER的变体。

为什么会有这两个变体呢?首先考虑一下BER的定义,BER是Basic Encoding Rules,它是一个非常基础的编码规则,在很多情况下并没有提供具体的编码实现规则,所以需要具体的实现者自行对基础协议进行扩展。

那么对应的,如果一个实现者声明自己是支持BER编码协议的,那么就意味着这个实现者需要支持所有BER可能的变体编码规则。

BER为我们提供了一个基础标准,它的可扩展性很强,虽然我们在架构或者系统应用中经常提到可扩展性,但是在某些情况下,可变性和可扩展性并不是我们所希望的。比如在密码学中,我们希望编码规则的是固定的。这样的情况就需要用到CER和DER编码。

CER和DER编码都是BER的扩展,他们和BER相比,只规定了一种具体的编码规则,所以他们的确定性更强。

CER和DER相比,CER使用的是不确定长度的格式,而DER使用的是确定长度的格式。这就是说DER中始终包含了前导的长度信息,而CER则是是用一个字节的内容结束符来表示编码的结束。

另外,在DER中,Bit string, octet string 和受限的字符串必须使用基础类型,不能使用组合类型。

DER被广泛使用在数字证书中,比如X.509。

总结

以上就是X.690和对应的BER CER DER编码详解,看完本篇文章,你又多会了一门语言,oh yeah!

更多内容请参考 http://www.flydean.com/47-x690-ber-cer-der/ 最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现! 欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
被嘲南方口音、被同行欺负,54岁患重病后袁立说:终于懂了绝望!

被嘲南方口音、被同行欺负,54岁患重病后袁立说:终于懂了绝望!

叨唠
2026-05-24 02:10:00
“干到5点上来才知道出事了”:留神峪煤矿爆炸后,有晚班工人仍下井作业

“干到5点上来才知道出事了”:留神峪煤矿爆炸后,有晚班工人仍下井作业

新京报
2026-05-24 14:15:43
“感觉她像冰块一样捂不热!”婚后长期分居从未同房

“感觉她像冰块一样捂不热!”婚后长期分居从未同房

黄河新闻网吕梁
2026-05-24 09:51:36
李晨郑凯冲上热搜!跑男停宣引热议,网友调侃太损了

李晨郑凯冲上热搜!跑男停宣引热议,网友调侃太损了

光辉记
2026-05-24 10:21:12
煤矿爆炸时247人下井仅记录124人

煤矿爆炸时247人下井仅记录124人

界面新闻
2026-05-24 09:25:54
历史上最太平的四十年!不是汉唐,也不是明清,绝对颠覆你的认知

历史上最太平的四十年!不是汉唐,也不是明清,绝对颠覆你的认知

文史达观
2026-05-22 11:43:20
活久见!因女生投诉男子光膀健身不雅,浙江一健身房禁止女性入店

活久见!因女生投诉男子光膀健身不雅,浙江一健身房禁止女性入店

火山詩话
2026-05-24 12:20:45
王鹤棣全网掉粉超20万!代言和作品遭抵制,路人缘崩塌难以挽回

王鹤棣全网掉粉超20万!代言和作品遭抵制,路人缘崩塌难以挽回

萌神木木
2026-05-24 11:50:12
根据楚门世界的剧情设定,楚门的老婆会给他生孩子吗?当然不会

根据楚门世界的剧情设定,楚门的老婆会给他生孩子吗?当然不会

萨沙
2026-05-24 07:58:03
汶川地震中,丢了学生逃跑的老师“范跑跑”,18年后竟成了大赢家

汶川地震中,丢了学生逃跑的老师“范跑跑”,18年后竟成了大赢家

芳芳历史烩
2026-05-24 01:06:29
曝王励勤上任后极力推动樊振东归队:不成功不会停 无奈为他人填坑

曝王励勤上任后极力推动樊振东归队:不成功不会停 无奈为他人填坑

风过乡
2026-05-24 10:13:19
连续两周获亚军!马来西亚大师赛:陈雨菲决赛0-2不敌因达农

连续两周获亚军!马来西亚大师赛:陈雨菲决赛0-2不敌因达农

全景体育V
2026-05-24 15:23:20
中央开始严查!多地机关,事业单位大整顿!这几类人受影响最大

中央开始严查!多地机关,事业单位大整顿!这几类人受影响最大

职场资深秘书
2026-05-23 11:09:48
山西这个煤矿爆炸,死亡数字的变化中隐藏着什么?

山西这个煤矿爆炸,死亡数字的变化中隐藏着什么?

靠山屯闲话
2026-05-23 18:13:38
富途,老虎,长桥的背后是腾讯,小米,阿里,金龙大跌后该轮到港股了

富途,老虎,长桥的背后是腾讯,小米,阿里,金龙大跌后该轮到港股了

东方豪侠
2026-05-24 07:19:48
今夜开始下!山东将迎大范围降雨天气,多地局部暴雨

今夜开始下!山东将迎大范围降雨天气,多地局部暴雨

齐鲁壹点
2026-05-24 13:22:07
武契奇抵京:这无疑是我政治生涯中最重要的一次访问

武契奇抵京:这无疑是我政治生涯中最重要的一次访问

政知新媒体
2026-05-24 15:33:48
广东7-11,全部撤下并道歉!

广东7-11,全部撤下并道歉!

科学发掘
2026-05-24 01:24:59
这5种药不宜长期服用,可能破坏身体免疫力!很多人都不知道

这5种药不宜长期服用,可能破坏身体免疫力!很多人都不知道

芹姐说生活
2026-05-24 14:15:40
周冬雨“拔萝卜”的瓜!

周冬雨“拔萝卜”的瓜!

八卦疯叔
2026-05-23 11:01:00
2026-05-24 16:40:49
flydean程序那些事
flydean程序那些事
最通俗的解读,最深刻的干货!
356文章数 438关注度
往期回顾 全部

科技要闻

我戴着摄像头上班,正在帮AI抢走我饭碗

头条要闻

夫妻婚后未同房 妻子:刚结婚时没成功 第二次他很懊恼

头条要闻

夫妻婚后未同房 妻子:刚结婚时没成功 第二次他很懊恼

体育要闻

唐斯发牌,大头逆袭:骑士跌向残忍夏季

娱乐要闻

李晨郑恺冲上热搜!跑男停宣引热议

财经要闻

爆炸致82人遇难 留神峪煤业存违法行为

汽车要闻

2027款星途瑶光上市 把"全球车"标准卷进13万级市场

态度原创

数码
教育
房产
时尚
家居

数码要闻

OPPO Reno 16官宣AI键,一键闪记有多强?

教育要闻

团团速递|“天宫”迎来首位香港航天员

房产要闻

疯狂周末,海口楼市突然爆了!

伊姐周六热推:电视剧《嫁金枝》;电视剧《大唐迷雾 第一季》......

家居要闻

低调传承 温润沉静

无障碍浏览 进入关怀版