数字证书、加密以及keytool工具的使用

 关于数字证书的一些笔记:

  1. 数字签名的作用是认证,而不是加密
  2. RSA算法中,公钥加密的只能用私钥解密,反之亦然。私钥加密更有意义,因为它具备了签名的作用私钥保存在密钥库中(文件形式),同时密钥库还会保存发给客户的数字证书。
  3. 证书传递可以通过U盘传递等多种途径进行。银行的U盾就是个典型的数字证书
  4. 如果需要双向认证,则需要3个证书。对于web应用,证书要配合activeX使用
  5. webservice加证书认证,只需要安装所需要的证书,以及配置应用服务器就可以。对开发是透明的
  6. 用数字证书替代直接使用公钥,是为了防止公钥被人偷换。因为无法辨别公钥到底是不是原来的那个。
  7. SSLSocket中,server端用keystore进行监听。客户端可以将cert加到自己信任的keystore中,也可以手工解析服务器的cert文件(或其他方式存储)
  8. eclipse的远程调试,如果连接用的是SSL,那么服务器的jar要用jarsigner.exe签名过才能调试

 

keytool的使用:

#生成私钥

keytool -genkeypair -alias "UMG" -keyalg "RSA" -keystore "d:\umg.keystore"

 

#生成自认证证书

keytool -export -alias "UMG" -file "d:\umg.cer" -keystore "d:\umg.keystore"

 

#导入自认证证书

keytool -import -file "d:\umg.cer" -keystore "d:\dsv.keystore"

 

 

#逆向

keytool -genkeypair -alias "dsv" -keyalg "RSA" -keystore "d:\dsv.keystore"

keytool -export -alias "dsv" -file "d:\dsv.cer" -keystore "d:\dsv.keystore"

keytool -import -file "d:\dsv.cer" -keystore "d:\umg.keystore"

 

Java的加解密例子:

 

public class RSAUtil {
   
    /**
     * RSA加密
     */
    public static byte[] encript(byte[] src,Key key) throws Exception{
        Cipher cipher=Cipher.getInstance("RSA");//DES对称,RSA非对称。。。
        cipher.init(Cipher.ENCRYPT_MODE, key);
        return cipher.doFinal(src);
    }
    
    /**
     * RSA解密
     */
    public static byte[] decript(byte[] encripted,Key key) throws Exception{
        Cipher cipher=Cipher.getInstance("RSA");//algorithm
        cipher.init(Cipher.DECRYPT_MODE, key);
        return cipher.doFinal(encripted);
    }
    
    /**
     * 生成密钥对,每次生成的密钥对都不一样
     */
    public static KeyPair generateKeyPair() throws NoSuchAlgorithmException{
        KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
        keyPairGen.initialize(1024);
        return keyPairGen.generateKeyPair();
    }
    
}

 

测试代码:
 //公钥加密、私钥解密
    @Test
    public void testPublic2Private() throws Exception {
        
        KeyPair keyPair = RSAUtil.generateKeyPair();
        // Generate keys.可以用序列化的方式将公钥、私钥保存
        RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
        RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
        
        //加密前的原始数据
        String t="sfsadgdfgdfgdfgsdgf";
        byte[] src=t.getBytes();
        byte[] encs=RSAUtil.encript(src,publicKey);
        byte[] src2=RSAUtil.decript(encs,privateKey);
        Assert.assertArrayEquals(src, src2);
        System.out.println(new String(src2));
    }
    
    //私钥加密、公钥解密
    @Test
    public void testPrivate2Public() throws Exception {
        KeyPair keyPair = RSAUtil.generateKeyPair();
        // Generate keys.可以用序列化的方式将公钥、私钥保存
        RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
        RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
        
        //加密前的原始数据
        String t="sfsadgdfgdfgdfgsdgf21534543撒的发生的";
        byte[] src=t.getBytes();
        byte[] encs=RSAUtil.encript(src,privateKey);
        byte[] src2=RSAUtil.decript(encs,publicKey);
        Assert.assertArrayEquals(src, src2);
        System.out.println(new String(src2));
    }
 
数字证书管理工具V2.0-使用java图形化编写,安装版直接安装使用(由于上传大小的限制,本版本为不带jre版,使用前请确保环境中已经安装过jdk) 数字证书管理工具V2.0: 包括三个视图,分别是:密钥库列表、证书库列表、证书管理维护界面;其中密钥库列表用于显示默认密钥库中的所有条目;证书库列表用于显示默认证书库中的所有数字证书;证书管理维护界面分为左右两部分,左半部分可以显示条目或者数字证书的详细信息,右半部分可以用于新建条目或者数字证书。另外,还可以对外部密钥库或者证书进行操作(V2.0新增功能)。 以下是三个视图的具体功能: =================================== 密钥库列表视图功能 1.双击条目可以在证书管理维护界面左半部分显示此条目的具体信息; 2.右击条目出现上下文操作菜单; 3.刷新条目; 4.清除屏幕; 5.查看证书; 6.签发证书; 7.修改口令; 8.生成证书; 9.导出证书; 10.删除条目; 11.导出对应密钥库; 12.导出p12个人证书; =================================== 证书库列表视图功能 1.双击证书可以在证书管理维护界面左半部分显示此证书的具体信息; 2.右击证书出现上下文操作菜单; 3.刷新证书; 4.清除屏幕; 5.查看证书; 6.公钥验证; 7.导入证书; 8.导出证书; 9.删除证书; =================================== 证书管理维护界面视图功能 1.数字证书显示界面:显示数字证书的详细信息,包括:证书信息、颁发给、颁发者、有效期、版本号、序列号、签名算法、有效期起始日期、有效期终止日期、主题、公钥、签名; 2.数字证书管理界面:新建条目或者数字证书,可输入条目或者数字证书具体的信息,包括CN(名字与姓氏)、OU(组织单位名称)、O(组织名称)、L(城市名称)、ST(省份名称)、C(国家代码)、Alia(别名)、KeyAlg(加密算法)、Validity(有效期)、生成类型; =================================== 对外部密钥库或者证书进行的操作有: 1.打开外部数字证书,查看证书详情; 2.查看外部密钥库中的所有条目,可以对其中的条目进行查看信息、生成证书、导出证书、修改口令、删除条目等操作; 3.将已签名的数字证书导入到密钥库中 ============================================================================ ==================================================================================================================================================================================================================================== 数字证书管理工具V1.0,广西大学计算机与电子信息学院 数字证书管理工具V1.0: 包括三个视图,分别是:密钥库列表、证书库列表、证书管理维护界面;其中密钥库列表用于显示默认密钥库中的所有条目;证书库列表用于显示默认证书库中的所有数字证书;证书管理维护界面分为左右两部分,左半部分可以显示条目或者数字证书的详细信息,右半部分可以用于新建条目或者数字证书。 以下是三个视图的具体功能: =================================== 密钥库列表视图功能 1.双击条目可以在证书管理维护界面左半部分显示此条目的具体信息; 2.右击条目出现上下文操作菜单; 3.刷新条目; 4.清除屏幕; 5.查看证书; 6.签发证书; 7.修改口令; 8.生成证书; 9.导出证书; 10.删除条目; =================================== 证书库列表视图功能 1.双击证书可以在证书管理维护界面左半部分显示此证书的具体信息; 2.右击证书出现上下文操作菜单; 3.刷新证书; 4.清除屏幕; 5.查看证书; 6.公钥验证; 7.导入证书; 8.导出证书; 9.删除证书; =================================== 证书管理维护界面视图功能 1.数字证书显示界面:显示数字证书的详细信息,包括:证书信息、颁发给、颁发者、有效期、版本号、序列号、签名算法、有效期起始日期、有效期终止日期、主题、公钥、签名; 2.数字证书管理界面:新建条目或者数字证书,可输入条目或者数字证书具体的信息,包括CN(名字与姓氏)、OU(组织单位名称)、O(组织名称)、L(城市名称)、ST(省份名称)、C(国家代码)、Alia(别名)、KeyAlg(加密算法)、Validity(有效期)、生成类型; (由于上传大小的限制,本版本为不带jre版,使用前请确保环境中已经安装过jdk)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值