ASN.1编码】的更多相关文章

一.定义: 是定义抽象数据类型的标准. 是用于描述数据的表示.编码.传输.解码的灵活记法. 它提供一套正式.无歧义和精确的规则,以描述独立于特定计算机硬件的对象结构. 标准的ASN.1编码规则有其基本编码规则BER,规范编码规则CER,唯一编码规则DER,压缩编码规则PER,和XML编码规则. 二.编码规则 通常ASN.1编码采用TLV格式. 由三部分组成:    TAG--头字节  LEN--长度 VAL--数据 (1)头字节(TAG) 通常位于ASN.1编码的开始,由3部分组成: 类别  结…
来自几年前本人写的一篇博客 http://blog.csdn.net/newyf_cun/article/details/13016069 如下使用libtasn1分析asn1的编码规则. http://www.linuxfromscratch.org/blfs/view/stable/general/libtasn1.html https://github.com/Distrotech/libtasn1 http://www.gnu.org/software/libtasn1/ 0.ASN.1…
ASN ASN.1 – Abstract Syntax Notation dot one,抽象记法1.数字1被ISO加在ASN的后边,是为了保持ASN的开放性,可以让以后功能更加强大的ASN被命名为ASN.2等,但至今也没有出现. 描述了一种对数据进行表示.编码.传输和解码的数据格式.它提供了一整套正规的格式用于描述对象的结构,而不管语言上如何执行及这些数据的具体指代,也不用去管到底是什么样的应用程序. 基本语法规则 在ASN.1中,符号的定义没有先后次序:只要能够找到该符号的定义即可,而不必关…
PKCS#1种介绍了哈希算法的OID等的ASN.1结构,因为使用ASN.1的解码工具(比如:ASN1View)时,会自动显示出各OID的含义,所以这里就不说明了.下面就只简单摘抄一下RSA公私钥的ASN.1的结构. ASN.1的编码回头会专门介绍,为了便于理解:SEQUENCE,暂时就理解为C语言里面的结构体就好:INTEGER,理解为正数类型就好. RSA公钥: RSAPublicKey :: = SEQUENCE{ modulus              INTEGER,   ------…
一.DER编码密钥对 先说下DER编码,是因为JCE本身是支持DER编码密钥对的解析的,可以参见PKCS8EncodedKeySpec和X509EncodedKeySpec. DER编码是ASN.1编码规则中的一个子集,具体格式如何编排没有去了解,但最终呈现肯定的是一堆有规律的二进制组合而成. PKCS#8定义了私钥信息语法和加密私钥语法,而X509定义证书规范,通常都会用DER和PEM进行编码存储,而在JAVA中则使用的 DER. 接下来看看如果通过DER编码的密钥对分别获取JAVA的公私钥对…
1 数据编码格式 openssl的数据编码规则是基于ans.1的,ans.1是什么 ? 先上高大上的解释 ASN.1(Abstract Syntax Notation One), 是一种结构化的描述语言,包括两部分,数据描述语言和数据编码规则,数据描述语言标准:语言标准允许用户自定义的基本数据类型,并可以通过简单的数据类型组成更复杂的数据类型.数据编码规则:这些编码方法规定了将数字对象转换成应用程序能够处理.保存.传输的二进制形式的一组规则.标准ASN.1编码规则有规范编码规则(CER,Cano…
转载:https://blog.csdn.net/sever2012/article/details/7672699 一.简介 ASN.1(Abstract Syntax Notation dotone),抽象语法标记1.是定义抽象数据类型形式的标准,是用于描述数据表示.表示.传输.编码的记法. ASN.1只包含信息结构,不处理具体业务数据,它不是一个编程语言. ASN.1没有限定编码方法,各种ASN.1编码规则提供了由ASN.1描述其抽象句法的数据的值的传送语法(具体表达),常见的编码规则有:…
[引言]ASN.1全称为Abstract Syntax NotationOne,是一种描述数字对象的方法和标准.openssl的编码方法就是基于该标准的,目前,很多其他软件的编码方法也是基于该标准.对于直接使用openssl的API或者应用程序来说,可能对ASN.1的了解并不需要很清楚,但是为了使大家对后续介绍的各个API有一个更深刻的编码知识基础,所以对该ASN.1以及openssl相应提供的API处理函数作介绍. [ASN.1概述]ASN.1作为一个数字对象描述标准,包括了两部分,分别为数据…
一.版本号 结构体CERT_INFO中的字段dwVersion即为证书版本,可以直接通过下面的代码获得: DWORD dwCertVer = m_pCertContext->pCertInfo->dwVersion; 版本值的定义如下: 也就是说,V1的值为0:V3的值为2,目前绝大多是证书都是V3版本. 二.序列号 序列号对应结构体CERT_INFO中的字段SerialNumber,不过该字段为ASN.1编码的大数对象,需要解码才能转化为我们平时看到的十六进制序列号.获取序列号的函数如下:…
其实内容主要来源于上一篇博文,只是重新组织了语言,并做了原理性的阐述,更容易理解:P ----------------------------------------- 华丽的分割线 ----------------------------------------- 互联网上大多数网站,用户的数据都是以明文形式直接提交到后端CGI,服务器之间的访问也大都是明文传输,这样可被一些别有用心之人通过一些手段监听到.对安全性要求较高的网站,比如银行和大型企业等都会使用HTTPS对通讯过程进行加密等处理.…