asn1 学习笔记

本文深入探讨了ASN.1(Abstract Syntax Notation One)语法及其在数据定义、初始化、扩展、容器、序列、集合等方面的用法,并通过与C语言结构体的对比,解释了如何将ASN.1用于描述复杂数据结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

语法
定义
Name ::= type
定义一个名称为“Name”的元素 它是一个给定ASN.1类型“Type”的实例
MyName ::= IA5String
//IA5String(类似于ASCII字符)
定义并初始化
MyName ::= IA5String(Tom)
MyName 是字符串"Tom" 的编码
扩展
MyName ::= IA5String(Tom|Joe)
MyName 可以是Tom也可以是Joe

容器 Container
包含了其他相同或则不同类型元素的数据类型  
序列 SEQUENCE    单一序列 SEQUENCE OF   集合 SET  单一集合  SET OF
Name ::= Container{
    Name Type,
    [Name Type, .....]
}
UserRecord ::= SEQUENCE{
    Name SEQUENCE{
        First IA5String,
        Last  IA5String
    }
    DoB  UTCTIME
}
等价于 C语言的
struct UserRecord{
    struct Name{
        char *First;
        char *Last;
    };
    time_t DoB;
};


可选 OPTIONAL  默认 DEFAULT   选择 CHOICE

数据类型
布尔型  Boolean
八位位数组  OCTET String
位串     BIT String
类似于ASCII字符 IA5String
可打印字符串 PrintableString
整数 INTEGER
对象标识符 OBJECT Identifier, OID
世界协调时  UTCTIME
空 NULL
序列 SEQUENCE   单一序列  SEQUENCE  OF
集合 SET 单一集合 SET OF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

six2me

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值