Android/Java中解析.crt证书文件的公钥(public key)---Android拓展篇

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: Android/Java中解析.crt证书文件的公钥(public key)---Android拓展篇

Android/Java中解析.crt证书文件的公钥(public key)

——读取.crt文件证书(获取key)


1.问题描述


1)首先,在做项目时为加强安全性,需要读取 x.crt证书文件获取公钥;此时使用普通的IO流读取文件是行不通的,通过学习,发现用下面的方法可以完美解决,分享出来,希望对大家有帮助。

2)在使用的过程中,遇到了一个bug:

java.security.cert.CertificateException: com.android.org.conscrypt.OpenSSLX509……

bug信息太长,后面的省略了,总结异常关键点:

CertificateException - OpenSSLX509CertificateFactory$ParsingException;

后来发现方法中需要多传一个"BC",就可以解决问题:

eg:CertificateFactory.getInstance("X.509","BC");


2.解决问题


代码如下:


/*
获取公钥key的方法(读取.crt认证文件)
*/
private static String getKeyFromCRT(){
        String key="";
        CertificateFactory certificatefactory;
        X509Certificate Cert;
        InputStream bais;
        PublicKey pk;
        BASE64Encoder bse;
        try{
      //若此处不加参数 "BC" 会报异常:CertificateException - OpenSSLX509CertificateFactory$ParsingException
            certificatefactory=CertificateFactory.getInstance("X.509","BC");
      //读取放在项目中assets文件夹下的.crt文件;你可以读取绝对路径文件下的crt,返回一个InputStream(或其子类)即可。
            bais = this.getAssets().open("xxx.crt");
            Cert = (X509Certificate) certificatefactory.generateCertificate(bais);
            pk = Cert.getPublicKey();
            bse = new BASE64Encoder();
            key=bse.encode(pk.getEncoded());
//            Log.e("源key-----"+ Cert.getPublicKey());
//            Log.e("加密key-----"+bse.encode(pk.getEncoded()));
        }catch(Exception e){
            e.printStackTrace();
        }
        key=key.replaceAll("\\n", "").trim();//去掉文件中的换行符
        return key;
    }
目录
打赏
0
0
0
0
2
分享
相关文章
|
11天前
|
.NET 平台 SM2 国密算法 License 证书生成深度解析
授权证书文件的后缀通常取决于其编码格式和具体用途。本文档通过一个示例程序展示了如何在 .NET 平台上使用国密 SM2 算法生成和验证许可证(License)文件。该示例不仅详细演示了 SM2 国密算法的实际应用场景,还提供了关于如何高效处理大规模许可证文件生成任务的技术参考。通过对不同并发策略的性能测试,开发者可以更好地理解如何优化许可证生成流程,以满足高并发和大数据量的需求。 希望这段描述更清晰地传达了程序的功能和技术亮点。
69 13
.NET 平台 SM2 国密算法 License 证书生成深度解析
解析:HTTPS通过SSL/TLS证书加密的原理与逻辑
HTTPS通过SSL/TLS证书加密,结合对称与非对称加密及数字证书验证实现安全通信。首先,服务器发送含公钥的数字证书,客户端验证其合法性后生成随机数并用公钥加密发送给服务器,双方据此生成相同的对称密钥。后续通信使用对称加密确保高效性和安全性。同时,数字证书验证服务器身份,防止中间人攻击;哈希算法和数字签名确保数据完整性,防止篡改。整个流程保障了身份认证、数据加密和完整性保护。
Android历史版本与APK文件结构
通过以上内容,您可以全面了解Android的历史版本及其主要特性,同时掌握APK文件的结构和各部分的作用。这些知识对于理解Android应用的开发和发布过程非常重要,也有助于在实际开发中进行高效的应用管理和优化。希望这些内容对您的学习和工作有所帮助。
157 83
Android与iOS开发环境搭建全解析####
本文深入探讨了Android与iOS两大移动操作系统的开发环境搭建流程,旨在为初学者及有一定基础的开发者提供详尽指南。我们将从开发工具的选择、环境配置到第一个简单应用的创建,一步步引导读者步入移动应用开发的殿堂。无论你是Android Studio的新手还是Xcode的探索者,本文都将为你扫清开发道路上的障碍,助你快速上手并享受跨平台移动开发的乐趣。 ####
免费通配符SSL证书不限制申请-2025最新渠道解析
在网络安全至关重要的今天,通配符SSL证书因其能保护主域名及所有二级子域名而备受青睐。本文解析2025年最新免费通配符SSL证书申请渠道,重点介绍JoySSL提供的不限量免费证书。通过简单步骤,用户可轻松申请并安装证书,确保网站安全。注意及时续签和政策变动,以保障长期稳定使用。
Android不同module布局文件重名被覆盖
Android不同module布局文件重名被覆盖
2025通配符证书免费申请步骤解析
打造安全、高效的网站加密环境,从免费通配符SSL证书开始!今年我们特别推出免费通配符SSL证书申请活动,覆盖主域名及所有子域名。只需一次申请,即可保护无限子域名,节省时间和资源。全程0成本,自动化流程快速配置,权威CA机构签发,兼容主流浏览器与平台。非技术人员也能轻松操作,提升网站安全性与用户信任度。立即访问JoySSL官网注册并申请,享受顶级加密服务!
深入探索Android系统架构:从内核到应用层的全面解析
本文旨在为读者提供一份详尽的Android系统架构分析,从底层的Linux内核到顶层的应用程序框架。我们将探讨Android系统的模块化设计、各层之间的交互机制以及它们如何共同协作以支持丰富多样的应用生态。通过本篇文章,开发者和爱好者可以更深入理解Android平台的工作原理,从而优化开发流程和提升应用性能。
国内外SSL证书较量:一站式全解析
本文探讨了国产SSL证书与国际SSL证书的区别,从加密算法、适用范围、性能、价格及本土化服务等多个角度进行了对比分析,指出两者各具优势,选择应基于网站的具体需求。
|
4月前
|
深入解析Android系统架构及其对开发者的意义####
【10月更文挑战第21天】 本文旨在为读者揭开Android操作系统架构的神秘面纱,探讨其如何塑造现代移动应用开发格局。通过剖析Linux内核、硬件抽象层、运行时环境及应用程序框架等关键组件,揭示Android平台的强大功能与灵活性。文章强调了理解Android架构对于开发者优化应用性能、提升用户体验的重要性,并展望了未来技术趋势下Android的发展方向。 ####
97 0

推荐镜像

更多