keytool知识

keytool 将密钥和证书储存在一个所谓的密钥仓库中。缺省的密钥仓库实现将密钥仓库实现为一个文件。

它用口令来保护私钥。

 

数字签名的原理 

1:被发送文件采用哈希算法对原始报文进行运算,得到一个固定长度的数字串,称为报文摘要   (Message   Digest),不同的报文所得到的报文摘要各异,但对相同的报文它的报文摘要却是唯一的。

2:发送方生成报文的报文摘要,用自己的私钥对摘要进行加密来形成发送方的数字签名。 

3:这个数字签名将作为报文的附件和报文一起发送给接收方。 


4:接收方首先从接收到的原始报文中用同样的算法计算出新的报文摘要,再用发送方的公钥对报文附件的数字签名进行解密,比较两个报文摘要,如果值相同,接收方就能确认该数字签名是发送方的。

 

生成证书(生成密钥库文件):
keytool -genkey -alias name1 -keyalg RSA -keystore C:\keystore

 

列出证书:
keytool -list -keystore  C:\keystore

 

导出证书:
keytool -export -alias name1 -file name1.cer -keystore C:\keystore

keytool -export -alias name2 -file name2.cer -keystore C:\keystore

 

一、从密钥库文件中获取私钥:

FileInputStream fis = new FileInputStream(new File(密钥库文件));

// 打开keystore

KeyStore ks = KeyStore.getInstance("JKS");
ks.load(fis, keyStorePass.toCharArray());

// 取出alias的私钥
privateKey = (KeyStore.PrivateKeyEntry) ks.getEntry(alias,new PasswordProtection(keyAliasPass.toCharArray()));

 

二、用私钥对需要加密的字符串进行加密操作

// 用私钥对字符串进行加密采用RSA算法
Cipher desCipher = Cipher.getInstance("RSA/ECB/NoPadding");

desCipher.init(Cipher.ENCRYPT_MODE, 从密钥库文件中获取的私钥);

// 用私钥对信息进行加密
byte[] ciphertext = desCipher.doFinal(需要加密字符串);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值