CSP学习之ASN.1编码(一)】的更多相关文章

一.定义: 是定义抽象数据类型的标准. 是用于描述数据的表示.编码.传输.解码的灵活记法. 它提供一套正式.无歧义和精确的规则,以描述独立于特定计算机硬件的对象结构. 标准的ASN.1编码规则有其基本编码规则BER,规范编码规则CER,唯一编码规则DER,压缩编码规则PER,和XML编码规则. 二.编码规则 通常ASN.1编码采用TLV格式. 由三部分组成:    TAG--头字节  LEN--长度 VAL--数据 (1)头字节(TAG) 通常位于ASN.1编码的开始,由3部分组成: 类别  结…
Crypto API目的就是提供开发者在windows下使用PKI的编程接口. Crypto 提供了很多的加解密相关函数,如编码.解码.加密解密,哈希,数字证书.证书管理证书存储等.       有关加密的API的国际标准 (1)GSS-API (Generic Security Services API) (2)CDSA (3)RSA PKCS#11 (4)微软CryptoAPI   微软的CryptoAPI是Win32平台下为应用程序开发者提供的数据加解密和安全的编程接口. 包含了: 1.基…
来自几年前本人写的一篇博客 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…
学习H264之前,最好阅读一下维基百科中有关H264的相关介绍,里面包含了其的发展历程.主要特点.参考文献.参考网站等. 研究H264的主要文件包括两份参考手册(一份是语法结构参考手册,一份是JM开发手册)和软件开发模型JM.x.y(Joint Model H264编解码参考开发模型). 一.编码框架 1H264的编码框架主要如图1所示: 原来的英语解释是: The Encoder includes two dataflow paths, a “forward” path (left to ri…
ASN ASN.1 – Abstract Syntax Notation dot one,抽象记法1.数字1被ISO加在ASN的后边,是为了保持ASN的开放性,可以让以后功能更加强大的ASN被命名为ASN.2等,但至今也没有出现. 描述了一种对数据进行表示.编码.传输和解码的数据格式.它提供了一整套正规的格式用于描述对象的结构,而不管语言上如何执行及这些数据的具体指代,也不用去管到底是什么样的应用程序. 基本语法规则 在ASN.1中,符号的定义没有先后次序:只要能够找到该符号的定义即可,而不必关…
1.字符编码 #ASCII码里只能存英文和特殊字符 不能存中文 存英文占1个字节 8位#中文编码为GBK 操作系统编码也为GBK#为了统一存储中文和英文和其他语言文字出现了万国码Unicode 所有一个字符都占2个字节 16位#英文文档改为Unicode编码大小变大一倍 为解决这种浪费空间问题#出现了Unicode扩展集 Utf-8 为可变长的字符编码 默认英文字符按ASCII码存储 中文按照3个字节存储 编码都要先decode成unicode再转码成目标编码 #获取默认编码import sys…
Unicode编码 计算机只能处理数字,如果要处理文本,就必须把文本转化为数字才能处理 有许多编码标准,但是不同的编码标准有时候会混乱,所以Unicode应运而生 Unicode把所有语言统一到一套编码里,这样就不会再有乱码问题 ASCII编码和Unicode编码的区别: ASCII编码是1个字节,而Unicode编码通常是2个字节. 字母A用ASCII编码是十进制的65,二进制的01000001: 字符0用ASCII编码是十进制的48,二进制的00110000,注意字符'0'和整数0是不同的:…
#!/usr/bin/env python3 # -*- coding: utf-8 -*- #第一行注释是为了告诉Linux/OS X系统, #这是一个Python可执行程序,Windows系统会忽略这个注释: #第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码, #否则,你在源代码中写的中文输出可能会有乱码. ''' >>> ord('A') 65 >>> ord('中') 20013 >>> chr(66) 'B' >&…
1  编码的初始 计算机在存储数据和传输数据的时候,都是0101的二进制. ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号. 显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码…
一.枚举 enumerate,for i in enumerate(可迭代对象),返回元组,内容是(序列号,可迭代的每一个元素)        for i,j in enumerate(可迭代对象,开始序列号),返回序列号,可迭代的每一个元素 a = 'abc' b = {'a':1,'b':2} for i in enumerate(a): print(i) #输出: #(0, 'a') #(1, 'b') #(2, 'c') for i,j in enumerate(a,1): print(…