JR 精品文章 - ASN.1/BER/DER编码子集入门指南(一)
AD: jr (at) javaresearch.org


首页 | 动态 | 文章 | FAQ  | 新闻 | 下载 | 代码 | 工作 | 调查 | 术语 | 站点 | 图书 | 论坛 | 帮助 | 全部  

TOP | 交流 | 软件 | 专栏 | 开源 | 译/著 | 源码 | API  | 推荐 | FTP  | 积分 | 统计 | 搜索 | Blog | 我们  
首页 » 研究文集 » Java 安全 搜索标题相关文章 搜索标题相关文章    评论此文章 发表评论     开始监控此文章 开始监控   加入收藏夹  加入收藏夹
ASN.1/BER/DER编码子集入门指南(一)
david 翻译   更新:2002-12-12 11:24:27  版本: 1.0   

                 

ASN.1/BER/DER编码子集入门指南(一)



RSA实验室技术笔记
作者:Burton S.Kaliski Jr.
最终修订日期:Nov 1,1993
翻译:David(David@javaresearch.org),2002年6月

摘要:本笔记提供了关于OSI提出的ASN.1(Abstract Syntax Notation One)/BER(Basic Encoding Rules)/DER(Distinguished Encoding Rules)的入门指南。本文的主要目的是提供充分的背景细节资料,以便于让读者更好地理解和实现PKCS系列标准。

译者注:关于安全或者通信,编码是件很基本的事情,无论对于设计人员还是编码人员来说,都是必不可少的。本人希望通过翻译本文,为那些面对ASN.1编码一筹莫展的人或者因为对ASN.1编码一知半解而常常苦恼的人――提供帮助。在翻译本文之后,本人将利用JCE或某些Java厂商的java包来演示如何解析和构建ASN.1编码的对象。


1、介绍


    总所周知,抽象是解决软件开发问题的有效手段。利用抽象,设计人员可以定义系统的一个部分而不用关注这个部门实际上是如何实现或者表达的。这一方法使得实现很open,它简化了定义过程,使得在实现部件之前可以声明某些“公理”、并且在设计高层部件时假定下层部件是可以实现的。抽象是现代多数软件规范的特点。

    作为当今最复杂的系统之一,开放系统互联(OSI)是一个包含了大量抽象的例子。OSI是一个国际通用的标准体系,从物理层一直到用户层,规划了计算机之间的互联。高层次的对象被抽象定义,并将由底层的对象来实现。比如,某层的一个服务可能需要在计算机之间传递某个抽象对象;某一底层则可能提供关于0、1字符串的实现,利用一些编码规则把高层的抽象对象转换成这些字符串。OSI之所以被称为开放系统是因为它在每一层上支持不同的服务实现。

    OSI的说明抽象对象的方法叫做抽象语法标记(ASN.1,在X.208中定义),而用0、1字符来表示这样的对象的规则集合叫做基本编码规则(BER)。ASN.1是一个很灵活的标记法,它允许定义众多的数据类型――从整数和位串等简单类型到如集合、序列等的结构,还可以是其它复杂定义的类型。BER描述了如何将ASN.1类型表示和编码成八位字节串。通常不止一种编码给定数据的方法,另一种叫做DER(Distinguished Encoding Rules)的编码集合,它是BER的子集,其特点是给每一个ASN.1值一个唯一的编码。

    本笔记的目的是充分地描述ASN.1/BER/DER编码子集,以便于理解和实现基于OSI的应用和RSA数据公司的PKCS标准。本笔记包括关于ASN.1/BER/DER的概述、经过删节的ASN.1类型列表和它们的BER/DER编码。2-4节给出了一个ASN.1/BER/DER的概述,第5节列出了一些ASN.1类型,给出了他们的表示法、特定的编码规则、例子和它们对于PKCS的应用情况。第6节以X.500区别名称为例做了一个总结。

    本笔记没有谈到ASN.1的高级特点(例如宏),因为它们在实现PKCS时并不必要。关于其它特征和更多细节,请读者参考CCITT的建议文档:X.208、X.209,这两份文档中定义了ASN.1和BER。

术语和表示法  本笔记中,字节指8位无符号整数,第8位最重要,而第1位最不重要。以下表示法将用来表示ASN.1标记:

    BIT  用等宽在类型和值标记中表示文本字符;例如,它表示十六进制中的一个字节值。
    [i]n1[/i]   宽体斜体表示一个变量
    [ ]      方括号表示一个条款是可选的
    { }     大括号表示相关条款
     |     竖条表示可以在一组值中任选
    ...    省略号表示多次重复
     =      等号表示条目由一些子条目来表达。
  

(未完待续)

版权声明   给作者写信
本篇文章对您是否有帮助?  投票:         投票结果:     34       2
作者其它文章: 作者全部文章     查看作者的Blog
评论人:liaowufeng 发表时间: Wed Sep 20 10:43:46 CST 2006
高手,问一下:
ASN.1/BER/DER编码 是什么?
是为了解决什么问题出提出来的?
有什么作用的?
在什么场合上会使用呢?
评论人:qchfu2006 发表时间: Sat Apr 14 10:17:45 CST 2007
请问高手,那里有与协议相关的中文资料阿

这个文章共有 2 条评论
主题: Java 2源码解读1:java.util.ArrayList (版本:2.0) 上一篇文章
返回文章列表 返回〔Java 安全〕
下一篇文章 主题: 深入剖析java类的构造方式


文字广告链接
        自主、快速定制基于JAVA的B/S业务系统          重量级企业在线自定义WEB报表平台
        Excel制表、零代码发布、打印、图表结合——快逸报表,免费、稳定、功能强大的java工具
        技术圈: 关于Java、dotNet、PHP、Ruby、奇客、Web2.0等更多资讯博客精选文章

关于 JR  |  版权声明  |  联系我们 

©2002-2006 JR 版权所有 沪ICP备05019622号