java程序实现对证书的操作

1 Java程序从证书文件读取证书

import java.io.*;

import java.security.cert.*;

public class PrintCert{

public static void main(String args[ ]) throws Exception{

        CertificateFactory cf=CertificateFactory.getInstance("X.509");

        FileInputStream in=new FileInputStream("my.cer");

        Certificate c=cf.generateCertificate(in);

        in.close();

        String s=c.toString( );

        // 显示证书

        FileOutputStream fout=new FileOutputStream("tmp.txt");

         BufferedWriter out= new BufferedWriter(new OutputStreamWriter(fout));

        out.write(s,0,s.length( )); 

        out.close();   

}

}  

2 Java程序从密钥库直接读取证书

import java.io.*;

import java.security.*;

import java.security.cert.Certificate;

public class PrintCert2{

    public static void main(String args[ ]) throws Exception{

          String pass="080302";

          String alias="mykey";

          String name=".keystore";

          FileInputStream in=new FileInputStream(name);

          KeyStore ks=KeyStore.getInstance("JKS");           

          ks.load(in,pass.toCharArray());

          Certificate c=ks.getCertificate(alias);

          in.close();

         System.out.println(c.toString( ));

    }

}

3 Java程序显示证书指定信息(全名/公钥/签名等)

import java.io.*;

import java.security.*;

import java.security.cert.*;

import java.math.*;

public class ShowCertInfo{

   public static void main(String args[ ]) throws Exception{

        CertificateFactory cf=CertificateFactory.getInstance("X.509");

        FileInputStream in=new FileInputStream("my.cer");

        java.security.cert.Certificate c=cf.generateCertificate(in);

        in.close();

        X509Certificate t=(X509Certificate) c;

        System.out.println("版本号 "+t.getVersion());

        System.out.println("序列号 "+t.getSerialNumber().toString(16));

        System.out.println("全名 "+t.getSubjectDN());

        System.out.println("签发者全名n"+t.getIssuerDN());

        System.out.println("有效期起始日 "+t.getNotBefore());

        System.out.println("有效期截至日 "+t.getNotAfter());

        System.out.println("签名算法 "+t.getSigAlgName());

        byte[] sig=t.getSignature();

        System.out.println("签名n"+new BigInteger(sig).toString(16));

        PublicKey pk=t.getPublicKey();

        byte[ ] pkenc=pk.getEncoded();

        System.out.println("公钥");

        for(int i=0;i< div=""> 

        System.out.print(pkenc[i]+",");

        }

}

}
时间: 2024-07-29 01:27:01

java程序实现对证书的操作的相关文章

Java程序避开SSL证书问题访问https网站

部分原创,参考:参考:http://tanyongbing.iteye.com/blog/1855132 在项目开发中,有时会遇到与SSL安全证书导入打交道的,如何把证书导入java中的cacerts证书库呢? 其实很简单,方法如下: 每一步:使用Firefox浏览器,进入某个https://www.xxx.com开头的网站,把要导入的证书下载过来, 点击浏览器导航栏左边的锁,查看安全链接的更多信息,点击查看证书,点击详细信息,点击导出,保存类型"X.509证书(PEM)(*.crt; *.pe

Java加密解密与数字证书的操作

1 keytool命令总结 一.创建数字证书 交互模式 使用默认的密钥库.keystore(文件夹是c: Documents and Settingusername)和算法(DSA) keytool -genkey 默认的别名mykey 密钥库中能够存放多个条目(公钥/私钥对和证书),它们在密钥库中以别名(alias)区分. [plain] view plaincopy keytool -genkey -alias mytest -keyalg RSA -keysize 1024 -keysto

【Java】利用Java对配置文件操作实现Java程序的国际化

不仅仅是大名鼎鼎的Struts2,即便是小小的Java程序也能够实现国际化,根本就不用像网上大部分所说的那样,非西欧字符,例如我们的中文,岛国的日语之类的,必须使用native2ascii转码,坦诚,国际化字符串的配置文件xx_语言.propreties并不支持非西欧字符,只能转码存储,但你完全可以利用到我在<[Java]配置文件概念,Java对配置文件的操作>(点击打开链接)所介绍的方法,利用Java程序完成这个国际化的配置文件.Java会帮你自动转码. 一.基本目标 完成对大名鼎鼎的hel

Java程序操作数据库SQLserver详解

数据库基本操作:增删改查(CRUD) crud介绍(增.删.改.查操作) CRUD是指在做计算处理时的增加(Create).查询(Retrieve)(重新得到数据).更新(Update)和删除(Delete)几个单记事的首字母简写.主要被用在描述软件系统中数据库或者持久层的基本操作功能. Create new records Rctricvc cxisting rccords Update existing records Delete existing records. 要对数据表进行增.删.

redis(Springboot中封装整合redis,java程序如何操作redis的5种基本数据类型)

平常测试redis操作命令,可能用的是cmd窗口 操作redis,记录一下 java程序操作reids, 操作redis的方法 可以用Jedis ,在springboot 提供了两种 方法操作 RedisTemplate 和StringRedisTemplate 两种方法的区别 可参考:https://blog.csdn.net/yifanSJ/article/details/79513179 当然 springboot 中也可以使用Jedis ,本次记录的是 如何使用RedisTemplate

java程序操作Geometry对象

Geometry 空间地理对象,Oracle中存储Geometry对象的字段类型是 MDSYS.SDO_GEOMETRY,在数据库中构建Geometry对象的方法: v_pointarray MDSYS.sdo_ordinate_array; MDSYS.SDO_GEOMETRY(2003, 20131028, null, MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 1), v_pointarray); 其中 20131028是空间参考系. 在java程序中如何读写带有

Java程序员从笨鸟到菜鸟之(一百零三)java操作office和pdf文件(一)java读取word,excel和pd

在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下java对word.excel.pdf文件的读取.本篇博客只是讲解简单应用.如果想深入了解原理.请读者自行研究一些相关源码. 首先我们来认识一下读取相关文档的jar包: 1. 引用POI包读取word文档内容 poi.jar 下载地址 http://apache.freelamp.com/poi/release/bin/poi-bin-3.6-20091214.ziph

如何用JAVA代码签发数字证书

用JAVA签发数字证书 打开cmd 1.输入D: 2.输入cd keys 3.输入命令查看创建的密钥库的证书列表 keytool -list -v -keystore mykey.keystore -storepass 123456 4. 之前导出过server.cer文件,把这个文件安装到操作系统,过程默认. 5.创建一个密钥对,和之前一样,输入如下命令: --创建密钥对 keytool -genkey -dname "CN=tmp, OU=NC, O=Shanghai University,

Java程序员面试题集(116-135)

摘要:这一部分讲解基于Java的Web开发相关面试题,即便在Java走向没落的当下,基于Java的Web开发因为拥有非常成熟的解决方案,仍然被广泛应用.不管你的Web开发中是否使用框架,JSP和Servlet都是一个必备的基础,在面试的时候被问到的概率还是很高的. 116.说出Servlet的生命周期,并说出Servlet和CGI的区别? 答:Web 容器加载Servlet并将其实例化后,Servlet生命周期开始,容器运行其init()方法进行Servlet的初始化:请求到达时调用 Servl