Java密码学
来源:互联网 发布:淘宝助理数据包 编辑:程序博客网 时间:2024/06/05 11:20
代码
源码(Javadoc)对keystore的操作做了很好的说明
读取keystore
KeyStore keystore = KeyStore.getInstance("JKS");//证书类型 常见: JKS,PKCS12InputStream is = new FileInputStream(keystore路劲);keystore.load(is, keystore密码);
创建keystore
keyStore = KeyStore.getInstance("JKS");keyStore.load(null, null);//这一步不可以省略操作keyStore.store(FileUtils.openOutputStream(new File(储存的文件名)), 密码.toCharArray());
读取证书
keyStore.getCertificateChain(名称);
当不知道alias时候, keystore只有一张时
KeyStore keyStore=...;keyStore.getCertificateChain(Collections.list(keyStore.aliases()).get(0));
因为只有keyStore.aliases()方法读取名称, 而且其返回类型 Enumeration, 可用Enumeration遍历的方式, 如果是JDK 8 则可以用lambda简单处理
读取密钥
Key key = keyStore.getKey(名称, key的密码);
简介&&细节
- keystore 源码
This class represents a storage facility for cryptographic keys and certificates.
keystore是储存密钥和证书的设备
KeyStore可以存储三种类型数据
- PrivateKey 私钥
- SecretKey 对称密钥
- TrustedCertificateEntry 证书
每种数据都有自己的名称(alias)
1.储存SecretKey(源码)
KeyStore.ProtectionParameter protParam = new KeyStore.PasswordProtection(password);// save my secret key javax.crypto.SecretKey mySecretKey; KeyStore.SecretKeyEntry skEntry = new KeyStore.SecretKeyEntry(mySecretKey); ks.setEntry("secretKeyAlias", skEntry, protParam);
- 2. 储存私钥和证书链
- 这里需要说明以下, 私钥只能自己保存, 而公钥可以拿去不同机构生成不同证书, 所以方便管理, 私钥是和证书链一起管理.
PrivateKey privateKey=...;Certificate[] chain=...;keyStore.setKeyEntry(名称, privateKey, 密码, chain);//密码可以缺省, 即使用keystore的密码
- 3. 增加证书到证书链
- 这里没有现成的方法, 只能自己手动读取, 再进行覆盖
番外
keystore常见有两种存储, PKCS12以及JKS
- PKCS12是可以直接导入浏览器, 所以有人会以为它是证书, 其实不是. 它与JKS是同样属性.
为什么我们需要PFX, 当客户端不生成密钥对时候, 想要申请数字证书, 服务端就会生成密钥对,将公钥进行数字签名, 那客户端需要私钥解密怎么办? 那就只能将私钥和证书放在一起, 所以才有PFX这种格式 - JKS只能用于Java间使用
阅读全文
0 0
- Java密码学
- Java密码学
- Java密码学
- Java密码学
- Java密码学
- Java密码学
- Java密码学
- Java密码学
- Java密码学
- Java密码学
- Java密码学
- Java密码学
- Java密码学
- Java密码学
- Java密码学
- Java密码学
- Java密码学
- 收藏.Java.密码学
- 多对多业务,数据库水平切分架构一次搞定(58沈剑)
- javaEE项目Multipartfile实现文件上传下载并解决上传与下载文件中文乱码的问题
- 百度之星寻找母串
- 关于tensorflow 用于线性回归及MNIST 数字识别中的一些思考及补充
- CyclicBarrier同时执行
- Java密码学
- java面试题,各大企业常见的java笔试题之二
- 马尔可夫链算法原理与实现
- HDU 6069 题解
- 2017年8月6日21:42:57
- Error running app.main: This version of Android Studio is incompatible with the Gradle Plugin used.
- HorizontalScrollView+TabLayout+ViewPager+XUtils
- 为什么说 DOM 操作很慢
- shell脚本实现希尔排序