`
youtl
  • 浏览: 12418 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

数字证书、加密以及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));
    }
 
分享到:
评论

相关推荐

    JAVA使用数字证书加密文件

    最后,`JAVA使用数字证书加密文件.doc`可能是一个文档,详细介绍了整个过程和步骤,包括如何使用提供的工具和代码示例。`好礼说明 - 副本.txt`可能是关于额外资源或优惠的说明,但与核心的加密技术无关。 综上所述...

    KeyTool 工具生成X.509证书

    KeyTool工具生成X.509证书是Java平台自带的一个命令行工具,它主要用于管理和操作密钥对(公钥和私钥)以及数字证书。在本文中,我们将深入探讨KeyTool的基本用法、X.509证书的概念,以及如何使用KeyTool生成这种...

    证书工具KeyTool1.6

    总结起来,KeyTool 1.6作为数字证书工具,是Java环境下的基础安全工具,对于任何需要处理加密通信的开发者来说,理解和熟练使用KeyTool都是非常必要的。通过掌握如何生成、管理以及交互数字证书,我们可以确保网络...

    KeyTool.GUI.1.6 证书密钥查看生成工具

    KeyTool是Java Development Kit (JDK)自带的一个命令行工具,它主要用于创建、管理及导出数字证书和密钥对。这些证书用于验证服务器的身份,确保数据传输的安全性,比如在HTTPS协议中。 2. **证书与密钥** - **...

    keytool 加密证书制作

    标题中的“keytool 加密证书制作”指的是使用Java自带的工具——keytool,来创建和管理数字证书。这个过程涉及到网络安全、加密技术和PKI(Public Key Infrastructure,公钥基础设施)等概念。 首先,理解keytool的...

    密钥管理工具 Keytool-IUI

    Keytool-IUI 是一个增强版的Java密钥和证书管理工具,它扩展了标准的Java Keytool命令行工具,提供了更友好的用户界面(UI),使得在IT环境中管理和操作数字证书变得更加直观和方便。Keytool是Java Development Kit...

    PDF数字签名(ITEXT+keytool)

    在本项目中,我们使用了Java的ITEXT库来处理PDF文档,以及keytool工具来生成数字证书。以下是关于这些知识点的详细说明: 1. **PDF数字签名**:PDF数字签名是一种用于验证PDF文档未经修改的机制。它使用非对称加密...

    https证书生成工具(openssl和jre(自带keytool)) for windows.rar

    下面将详细介绍这两个工具以及如何使用它们生成证书。 1. **openssl** OpenSSL是一款开源的SSL/TLS库,它包含了一系列强大的加密算法,支持多种证书格式。在HTTPS证书生成过程中,openssl主要用来生成私钥和CSR...

    命令行keytool使用 证书DN生成数字证书容器 空格

    本篇文章将深入探讨`keytool`的使用,特别是如何通过命令行生成证书的Distinguished Name (DN)以及如何创建数字证书容器。 首先,让我们理解什么是Distinguished Name (DN)。DN是X.509证书中一个独特的标识符,它...

    keytool证书制作工具

    `keytool`是Java开发工具包(JDK)中...综上所述,`keytool`是Java环境下的强大工具,用于管理和操作数字证书,确保网络通信的安全性。通过熟练掌握其用法,开发者可以更好地保护自己的系统和服务免受潜在的安全威胁。

    基于java的keytool GUI 图形工具

    Java的Keytool GUI图形工具是Java开发者和系统管理员在处理数字证书和密钥对时的重要辅助工具。Keytool是Java自带的一个命令行工具,用于管理Java Keystore,它包含了公钥、私钥以及证书链。然而,对于不熟悉命令行...

    数字证书查看、拆分和格式转换工具

    本文将深入探讨“数字证书查看、拆分和格式转换工具”这一主题,涉及的关键词包括“SSL”、“keystore”、“crt”和“key”。 首先,让我们了解SSL(Secure Sockets Layer)和它的升级版TLS(Transport Layer ...

    java代码生成数字证书

    Java代码生成数字证书涉及到几个关键概念和技术,包括...以上就是使用Java代码生成数字证书的基本原理和过程,以及如何不通过keytool工具进行操作。通过理解这些概念,您可以根据需要创建自定义的证书生成解决方案。

    keytool生成证书

    Keytool是Java提供的一款工具,主要用于管理密钥对(公钥和私钥)以及数字证书,它允许用户创建、存储和管理这些安全组件。在本主题中,我们将深入探讨如何使用keytool生成证书及其相关概念。 首先,让我们了解什么...

    数字证书原理与简单应用

    1. 生成数字证书:使用 Keytool 工具生成数字证书。 2. 配置 Tomcat:在 Tomcat 的配置文件中配置数字证书的路径和密码。 3. 启用 HTTPS:在 Tomcat 中启用 HTTPS 协议,以确保数据的机密性和完整性。 数字证书是一...

    JAVA keytool数字证书生成及应用

    Java的`keytool`工具是Java Development Kit (JDK) 中的一个重要组件,主要用于管理和操作密钥对(公钥和私钥)以及数字证书。它提供了在本地系统中创建、导入、导出、查看和管理这些安全凭证的功能,这对于开发和...

    java keytool使用例子

    Java Keytool是Java开发工具包(JDK)中自带的一个命令行工具,主要用于管理数字证书、密钥对以及信任库。这个工具对于开发者和系统管理员来说非常重要,因为它们在进行安全通信,尤其是HTTPS、SSL/TLS连接时起着...

    [重要]Java代码验证keytool工具生成的密钥对

    Java代码验证keytool工具生成的密钥对是一个关键的安全操作,尤其在开发和部署SSL/TLS加密、Android应用签名或服务器身份验证等场景中。Keytool是Java Development Kit(JDK)自带的一个命令行工具,用于管理公钥/...

    CXF(WS_Security)证书加密

    证书加密是WS-Security中的一个重要组成部分,它通常使用X.509数字证书来验证服务提供者和服务消费者的标识,并对消息进行加密。X.509证书包含公钥和私钥,公钥用于加密数据,私钥用于解密数据。在CXF中,我们可以...

    keytool - 密钥和证书管理工具

    **描述**: Keytool是Java开发的一个强大工具,用于管理密钥对(公钥和私钥)以及数字证书。它可以帮助用户创建、存储、导出、导入和管理这些安全组件,这对于进行安全的网络通信和身份验证至关重要。 **知识点详解*...

Global site tag (gtag.js) - Google Analytics