[转] DER编码和ASN.1

转载地址:http://blog.csdn.net/taolinke/article/details/6220403

DER(Distinguished Encoding Rules,可辨别编码规则)。

ASN.1抽象语法标记(Abstract Syntax Notation One) ASN.1是一种 ISO/ITU-T 标准,描述了一种对数据进行表示、编码、传输和解码的数据格式。

DER是ASN.1众多编码方案中的一个。

ASN.1 defines the abstract syntax of information but does not restrict the way the information is  encoded. Various ASN.1 encoding rules provide the transfer syntax (a  concrete representation) of the data values whose abstract syntax is  described in ASN.1.

The standard ASN.1 encoding rules include:

ASN.1 together with specific ASN.1 encoding rules facilitates the  exchange of structured data especially between application programs over networks by describing data structures in a way that is independent of  machine architecture and implementation language.

Application layer protocols such as X.400  electronic mail , X.500 and LDAP  directory services , H.323 (VoIP ), BACnet and SNMP use ASN.1 to describe the protocol data units (PDUs) they exchange. It is also extensively used in the Access and Non-Access Strata of UMTS . There are many other application domains of ASN.1 [ 1] .

A particularly useful new application of ASN.1 is Fast Infoset . Fast Infoset is an international standard that specifies a binary encoding format for the XML Information Set (XML Infoset ) as an alternative to the XML document format. It aims to provide more efficient serialization than the text-based XML format.

Example

Data structures of FooProtocol defined using the ASN.1 notation:

FooProtocol DEFINITIONS ::= BEGIN 

    FooQuestion ::= SEQUENCE {
        trackingNumber INTEGER,
        question       IA5String
    } 

    FooAnswer ::= SEQUENCE {
        questionNumber INTEGER,
        answer         BOOLEAN
    }

This could be a specification published by creators of Foo protocol.  ASN.1 does not define conversation flows. This is up to the textual  description of the protocol.

Assuming a message, which complies with Foo protocol and which will be sent to the receiving party. This particular message (PDU ) is:

myQuestion FooQuestion ::= {
    trackingNumber     5,
    question           "Anybody there?"
}

To send the above message through the network one needs to encode it to a string of bits . ASN.1 defines various algorithms to accomplish that task, called  Encoding rules. There are plenty of them; one of the simplest is Distinguished Encoding Rules (DER) .

The Foo protocol specification should explicitly name one set of  encoding rules to use, so that users of the Foo protocol know which one  they should use.

[edit ]  Example encoded in DER

Below is the data structure shown above encoded in the DER format (all numbers are in hexadecimal):

30 -- tag indicating SEQUENCE
13 -- length in octets 

02 -- tag indicating INTEGER
01 -- length in octets
05 -- value 

16 -- tag indicating IA5String
0e -- length in octets
41 6e 79 62 6f 64 79 20 74 68 65 72 65 3f -- value

(Note: DER uses a pattern of tag-length-value triplets)

So what one actually gets is the string of 21 octets:

30 13 02 01 05 16 0e 41 6e 79 62 6f 64 79 20 74 68 65 72 65 3f

The scope of ASN.1 and DER ends here. It is possible to transmit the encoded message to the party by any means (utilizing TCP or any other protocol). The party should be able to decode the octets back using DER.

("Anybody there?" in ASCII)
时间: 2024-09-28 04:13:12

[转] DER编码和ASN.1的相关文章

Go标准库

bufio 实现缓冲的I/O bytes 提供了对字节切片操作的函数 crypto 收集了常见的加密常数 errors 实现了操作错误的函数 Expvar 为公共变量提供了一个标准的接口,如服务器中的运算计数器 flag 实现了命令行标记解析 fmt 实现了格式化输入输出 hash 提供了哈希函数接口 html 实现了一个HTML5兼容的分词器和解析器 image 实现了一个基本的二维图像库 io 提供了对I/O原语的基本接口 log 它是一个简单的记录包,提供最基本的日志功能 math 提供了

23.密码学知识-加密介绍-1——2019年12月19日

2019年12月19日14:51:00 1. 第1天 - 对称加密 1.1 基础知识点 知识点大纲介绍 密码的基础概念 对称加密 非对称加密 单向散列函数 哈希函数 消息认证码 数字签名 证书 ssl/tls - https 为什么要加密, 以及解决方案 保证数据安全 加密三要素 明文/密文 秘钥 定长的字符串 需要根据加密算法确定其长度 算法 加密算法 解密算法 加密算法和解密算法有可能是互逆的, 也有可能相同 常用的两种加密方式 对称加密 秘钥: 加密解密使用的是同一个秘钥, 秘钥有一个 特

X.509证书的编码及解析:程序解析以及winhex模板解析

一.证书的整体结构:证书内容.签名算法.签名结果. 用ASN.1语法描述如下: Certificate::=SEQUENCE{ tbsCertificate TBSCertificate, signatureAlgorithm AlgorithmIdentifier, signatureValue BIT STRING } 其中,签名算法为CA对tbsCertificate进行签名所使用的算法:类型为AlgorithmIdentifier,其ASN.1语法描述如下: AlgorithmIdent

OpenSSL使用2(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12概念说明)(转)

SSL SSL - Secure Sockets Layer,现在应该叫"TLS",但由于习惯问题,我们还是叫"SSL"比较多.http协议默认情况下是不加密内容的,这样就很可能在内容传播的时候被别人监听到,对于安全性要求较高的场合,必须要加密,https就是带加密的http协议,而https的加密是基于SSL的,它执行的是一个比较下层的加密,也就是说,在加密前,你的服务器程序在干嘛,加密后也一样在干嘛,不用动,这个加密对用户和开发者来说都是透明的.More:[维基

【转】证书和编码

证书与编码 本至上,X.509证书是一个数字文档,这个文档根据RFC 5280来编码并/或签发. 实际上,“X.509证书”经常被用来指代IETF的PKIX(Public Key Infrastructure)证书和X.509 v3 证书标准中的CRL(Certificate Revocation List). X509 文件扩展名 首先我们要理解文件的扩展名代表什么.DER.PEM.CRT和CER这些扩展名经常令人困惑.很多人错误地认为这些扩展名可以互相代替.尽管的确有时候有些扩展名是可以互换

那些证书相关的玩意儿(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12等)[zz]

那些证书相关的玩意儿(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12等)[zz]转载 <javascript:;> 2015-06-09 20:21:04 from:http://www.cnblogs.com/guogangj/p/4118605.html之前没接触过证书加密的话,对证书相关的这些概念真是感觉挺棘手的,因为一下子来了一大堆新名词,看起来像是另一个领域的东西,而不是我们所熟悉的编程领 域的那些东西,起码我个人感觉如此,且很长时间都没怎么搞懂.写这篇文

那些证书相关的玩意儿(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12等)

转自:http://www.cnblogs.com/guogangj/p/4118605.html 之前没接触过证书加密的话,对证书相关的这些概念真是感觉挺棘手的,因为一下子来了一大堆新名词,看起来像是另一个领域的东西,而不是我们所熟悉的编程领域的那些东西,起码我个人感觉如此,且很长时间都没怎么搞懂.写这篇文章的目的就是为了理理清这些概念,搞清楚它们的含义及关联,还有一些基本操作. SSL SSL - Secure Sockets Layer,现在应该叫"TLS",但由于习惯问题,我们

数字证书简介及Java编码实现

1.数字证书简介 数字证书具备常规加密解密必要的信息,包含签名算法,可用于网络数据加密解密交互,标识网络用户(计算机)身份.数字证书为发布公钥提供了一种简便的途径,其数字证书则成为加密算法以及公钥的载体.依靠数字证书,我们可以构建一个简单的加密网络应用平台. 数字证书类似于个人身份证,由数字证书颁发认证机构(Certificate Authority, CA)签发.只有经过CA签发的证书在网络中才具备可认证性.CA颁发给自己的证书叫根证书. VeriSign, GeoTrust和Thawte是国

der pem cer crt key pfx等概念及区别

证书主要的文件类型和协议有: PEM.DER.PFX.JKS.KDB.CER.KEY.CSR.CRT.CRL .OCSP.SCEP等. 一.编码格式 X.509 - 这是一种证书标准,主要定义了证书中应该包含哪些内容.其详情可以参考RFC5280,SSL使用的就是这种证书标准. 目前有以下两种编码格式. 1.PEM - Privacy Enhanced Mail,打开看文本格式,以"-----BEGIN..."开头, "-----END..."结尾,内容是BASE6