基于BouncyCastle的ASN.1分析工具设计与实现
个人报告
个人贡献
- 收集资料
- 任务规划
- ASN.1与数字证书
- ASN.1分析Alipay证书
- Eclipse导出引用第三方jar包的Java项目
- 程序调试
- 绘图总结
核心基础
- 通过[Tab]对证书的解析结果进行分级
模块功能
递归流程
运行结果
-
BC_asn.1_fat.jar
-
BC_asn.1.exe
-
Asn1View.exe
码云链接
遇到的问题
-
问题① 比较多个算法长度都与实际显示不符,例如SHA1WithRSA的1.2.840.113549.1.1.5明显超过了9个长度
-
解决方案① 原因是OID具有自己的编码规则,其编码过程如下
一级*40+二级,即为1*40 +2=42,十六进制为2A 三级840 840=6*128+72,将{6,72}以big-endian高位加1,也就是加128,将6+128=134转换成16进制就是86,72转换成16进制就是48,所以第四位的16进制表示就是86 48 四级113549=6*128^2+119*128+13,{6,119,13}以big-endian高位加1,也就是加128变成{134,247,13},对应的16进制分别是86,F7,07,后面的小于128的直接转换1.1.5 01 01 05,最后得到的 16 进制就是2A 86 48 D8 5F 01 01 05
-
问题② no recent launches
-
解决方案② 在asn项目下下载完整的asnc+java插件
-
问题③ 无法加载主类
-
解决方案③ 将java文件放在src目录下并且asn文件的“类名”要与文件名相同
-
问题④ 方法没有定义
-
解决方案④ 配置validation-api和asnrt的jar包,并且需要调整好asn类型的编码进制转换(16进制和8进制)
-
问题⑤ ASN1Dump cannot be resolved
-
解决方案⑤ 添加包org.bouncycastle.bcprov_1.64.0.v20191109-0815.jar,添加class import org.bouncycastle.asn1.util.ASN1Dump,删除package asn.1
-
问题⑥ 使用Eclipse自带的export功能导出引用第三方jar包的Java项目需要自定义配置文件MANIFEST.MF
-
解决方案⑥ 选择第三方工具Fat Jar进行导出,但是Eclipse高版本无法兼容Fat Jar,所以需要下载安装Eclipse4.2
设计体会与收获
- 本次课程设计的项目在此之前非常陌生,但是也因此学习到了很多新知识。不同于计算机实习项目开发,课程设计是小组项目,而在疫情期间实现小组学习相较于正常情况是很困难的,但是发达的网络技术也帮助我们克服重重困难实现无障碍地沟通和交流。
- 好在这学期有PKI技术课程让我对数字证书有一定的了解,但是相对于我们的项目内容还是十分有限的,最主要的还是靠自己在网络上收集资料和学习理解,比如说asn.1是什么,在混乱的信息中选择正确的有价值的内容同样是一种考验。还有就是不同于以往课程实验,面对较大项目时对任务有一定计划能够大大帮助我们实现目标,我以前不是一个喜欢做计划的人,但是通过这次课程设计我深深感觉到计划的重要性,如果不提前做好准备和计划是不可能如期完成的。