jks cer 证书生成

  • jks是java keystore的简称,是java的数字证书库,查看证书私钥需要密码,避免私钥一名文的形式出现在代码中

  • 情景一:客户端签名,服务器验签,确定是否是自己人

  1. 使用keytool生成jks,keytool工具在java->jdk->bin目录下,使用命令行,ps:红色部分请自行替换
    keytool -genkey -alias 别名 -keyalg RSA -keystore 文件名.jks

    经过一番复杂的输入,生成的jks文件在桌面->我的文档根目录下,这个jks里包含了自动生成的私钥

  2. 导出公钥cer证书,生成的cer文件在桌面->我的文档根目录下
    keytool -export -alias 别名 -keystore 文件名.jks -storepass 密码 -file 文件名.cer
  3. 用私钥对数据签名,这里只贴核心代码,用时自行补全

    1 KeyStore ks = KeyStore.getInstance("JKS");
    2 fis = new FileInputStream("路径\\文件名.jks");
    3 String storePassword = "上面生成jks时的密码";
    4 String storeAlias = "上面生成jks时的别名";
    5 ks.load(fis, storePassword.toCharArray());
    6 PrivateKey prikey = (PrivateKey) ks.getKey(storeAlias,storePassword.toCharArray());
    7 String priKeyStr = Base64.getEncoder().encodeToString(prikey.getEncoded());//查看私钥用
    8 System.out.println("私钥:"+priKeyStr);//查看私钥
    9 //用私钥签名
  4. 服务器用cer文件读取公钥,对客户端传输数据进行验签
  • 情景二:客户端加密,服务器解密,对传输数据进行加密

  1. 读取服务器cer证书为公钥,然后用公钥加密明文,传送密文给服务器
    1 is = new FileInputStream("路径\\文件名.cer"); 
    2 CertificateFactory cf = CertificateFactory.getInstance("X.509");
    3 X509Certificate cert = (X509Certificate) cf.generateCertificate(is);
    4 PublicKey publicKey=cert.getPublicKey();
    5 String pubKeyStr= Base64.getEncoder().encodeToString(publicKey.getEncoded());//查看公钥用
    6 System.out.println("公钥:"+pubKeyStr);//查看公钥
    7 //用公钥加密
  2. 服务器用私钥解出明文

 

注:一般明文较长,非对称加解密较慢,所以一般先用对称加密加密明文,然后用非对称加密加密对称加密密文 

转载于:https://www.cnblogs.com/gengchangjing/p/4866817.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值