asn.1 java_【密码工程】asn1——asn1c、javaAsn1Comilper、protobuf的使用示例

本文详细介绍了asn.1编码解码工具asn1c和javaAsn1Compiler的使用,以及protobuf在asn.1环境下的应用。通过示例展示了在C和Java中如何进行asn.1编码和解码,同时提供了protobuf的安装和使用流程,包括编写proto文件、生成代码及应用实例。
摘要由CSDN通过智能技术生成

1 使用asn1c实现编码

参考网址:http://lengxuezhixuan.blog.chinaunix.net/uid-28765492-id-3765759.html

PS:这个网址就是根据下载的asn1c中的英文指导文档做的。

* 遇到的问题:

(1)头文件的引用:头文件放在了vc/include下,对.h文件可以使用include<>。对于本工程下的.h文件使用include""

(2)如果cpp与c文件共存,会有预编译头不兼容的问题,可以设置所有源文件的属性去掉预编译头,或者将所有代码调整成cpp或c

****************************************************************************************************

本人所做的实验是用c编码、用java解码:将编码结果直接用%s输出到txt文件,之后用java解码就实现了不同语言间序列化数据的使用(其实都用不到asn文件,用c编码时只是需要利用asn文件生成那一系列c文件;解码就更不需要asn了)

PS:之后编了一个复杂的,各种报错类型找不到,浪费了一个小时才发现asn-0.9.21的类型定义名称和网上的不一样(要去sketon里面找),好坑。编码时自己设计的结构名name会被typedef成name_t!

=============================================================

2 使用javaAsn1Comilper解码(参考javaAsn1Comilper指导文档的示例)

(1)TestUtil是一个示例,可以不要(里面有结构化输出,可以直接copy一下);TestParser也可以不要,需要同时删掉另外一个继承了它的类

(2)为自己设计的结构里的元素分别创建类,并分别继承相应的类型:为rectangle的内容创建一个类width(继承ASN1Integer)

package com.chaosinmotion.asn1;

public class width extends ASN1Integer {

public width(){//默认是5

super(5);

}

public width(long value){//设置大小

super(value);

}

}

(3)创建自己设计的那个结构的类:创建类Rectangle。必须用super.addElement为结构添加元素,否则该结构里啥也没有

package com.chaosinmotion.asn1;

public class BerRectangle extends Sequence {

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值