密钥对的存储和加载

原创 2004年09月20日 10:27:00

主要用于数字签名:

1.存储密钥对

首先使用KeyPairGeneration产生密钥对:

        KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
        keyGen.initialize(1024);
        KeyPair keyPair = keyGen.genKeyPair();
        privateKey = keyPair.getPrivate();
        publicKey = keyPair.getPublic();

 

将密钥存储为文件的方法:

        FileOutputStream fs = new FileOutputStream(fileName);
        fs.write(privateKey.getEncoded());
        fs.close();

2.加载密钥对

假设公钥文件为public.dat、private.dat

首先读取公钥文件:

        //read public key
        FileInputStream fsPublicKey = new FileInputStream(publicKeyFile);
        BufferedInputStream bfsPublicKey = new BufferedInputStream(fsPublicKey);
        byte[] bytePublicKey = new byte[bfsPublicKey.available()];
        bfsPublicKey.read(bytePublicKey);
        bfsPublicKey.close();

使用KeyFactory产生公钥

        //build public key
        X509EncodedKeySpec  pubKeySpec = new X509EncodedKeySpec(
                byteEncodedPublicKey);
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        PublicKey pubKey = keyFactory.generatePublic(pubKeySpec);

 

主意,私钥的的处理和公钥相同,唯一不同的是私钥的KeySpec不同。私钥应使用PKCS8EncodedKeySpec

 

关于密钥管理的几个设计原则

关于密钥管理的几个设计原则 网络安全有赖于密钥管理的有效性,即保证密码的产生,存储,传输和使用的安全性,这就要求对密钥进行有效的管理。 1,任何密码不以明文的方式进行存储,除非是放在足够安全的密码...
  • tenfyguo
  • tenfyguo
  • 2013年11月13日 15:26
  • 7683

java中RSA加解密的实现

关于加密数据长度和解密数据长度大家可以看一下我前一篇文章内的介绍: 关于RSA算法密钥长度/密文长度/明文长度的介绍 public static void main(String[] args...
  • ye1992
  • ye1992
  • 2013年10月09日 11:08
  • 9990

RSA加密

/** * 参考资料 https://www.zhihu.com/question/25912483 http://blog.csdn.net/lemon_tree12138/article/d...
  • qq_21989939
  • qq_21989939
  • 2017年12月13日 14:13
  • 73

公钥,私钥和数字签名这样最好理解

一、公钥加密  假设一下,我找了两个数字,一个是1,一个是2。我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥。 我有一个文件,不能让别人看,我就用1加密了。别人...
  • ab6326795
  • ab6326795
  • 2015年11月06日 17:05
  • 1989

Java加密解密快速入门下篇【包括MD5、BASE64、DES、RSA等算法】

在上一篇博客中已经简要的介绍了MD5、BASE64、DES、RSA等算法在Java中的具体应用。现在可以考虑对这些代码封装成一个工具类EncryptUtil,然后再补充一下Commons Codec对...
  • z69183787
  • z69183787
  • 2017年05月22日 18:12
  • 373

文件加解密 - 密钥保存

当我们想做一个加解密系统的时候,有个问题还是绕不过的,就是如何保存加解密的密钥。 通常如果想做文件的加解密,都是用的对称算法,一般就是AES或者DES。 那这里有个问题密钥怎么管理呢? 基本上可...
  • zj510
  • zj510
  • 2014年10月28日 16:18
  • 8159

密钥对的存储和加载

主要用于数字签名:1.存储密钥对首先使用KeyPairGeneration产生密钥对:        KeyPairGenerator keyGen = KeyPairGenerator.getIns...
  • cycloneQI
  • cycloneQI
  • 2004年09月20日 10:27
  • 2168

Android使用C/C++来保存密钥

Android使用C/C++来保存密钥 本文主要介绍如何通过native方法调用取出密钥,以替代原本直接写在Java中,或写在gradle脚本中的不安全方式。...
  • dingding_android
  • dingding_android
  • 2016年06月28日 14:41
  • 3632

生成RSA密钥对

一、前言著名的RSA算法,它通常是先生成一对RSA 密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册。为提高保密强度,RSA密钥至少为500位长,一般推荐使...
  • Roy_70
  • Roy_70
  • 2017年05月25日 17:23
  • 829

RedHatOpenStack学习之三安全组及密钥对

项目中默认的是全 1.在develop项目中创建一个名为sec-ssh的安全组,往sec-ssh的安全组添加一条放行ssh端口的规则 Compute---访问&安全---创建安全组---名称:sec-...
  • junjunjiao
  • junjunjiao
  • 2016年03月18日 16:49
  • 865
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:密钥对的存储和加载
举报原因:
原因补充:

(最多只允许输入30个字)