数据编码格式
ASN.1(Abstract Syntax Notation dotone),抽象语法标记1。是定义抽象数据类型形式的标准,是用于描述数据表示、表示、传输、编码的记法。
ASN.1是一种结构化的数字对象描述语言,它包括了两个部分:
- 数据描述语言(ISO8824)
- 数据编码规则(ISO8825)
ASN.1的数据描述语言标准允许用户自定义基本数据类型,并可以通过简单的数据类型组成更复杂的数据类型。
ASN.1提供了多种数据编码方法:
- BER(Basic Encode Rules),基本编码规则
- CER(Canonical Encoding Rules),规范编码规则
- DER(Distinguished Encoding Rules),唯一编码规则
- PER(PackedEncoding Rules),压缩编码规则
- XML(XER,XML Encoding Rules),XML编码规则
目前经常被采用的是BER编码,但是BER编码具有编码不唯一的性质,也就是说,一个相同的对象通过BER编码可能会产生几种不同的编码数据。所以,在 OpenSSL和其他密码学相关软件中经常使用BER的一个子集DER。对于每一个ASN.1对象,使用DER编码得出的二进制编码数据是唯一的。
PEM编码全称是Privacy Enhanced Mail,是一种保密邮件的编码标准。通常来说,对信息的编码过程基本如下:
(1)信息转换为ASCII码或其他编码方式,比如采用DER编码。
(2)使用对称加密算法加密经过编码的信息。
(3)使用BASE64对加密后的信息进行编码。
(4)使用一些头定义对信息进行封装,主要包含了进行正确解码需要的信息,头定义的格式如下:
<