`
run_wang
  • 浏览: 166822 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

java读取openssl生成的private key文件生成密钥的问题

key 
阅读更多
由 openssl生成的private key文件如下:
-----BEGIN RSA PRIVATE KEY-----
MIICXwIBAAKBgQDzxjNvQ4oUrDtPaPAnWiiixsiZSuNXIFhSwbKoaRWYLQSSCJPI
NuwCi2uRfQemOWp9EWUwxeQOwWxD3XUqZksCj7L7AUd8RXsIlB+Nejbw4KmSxbYn
39eGrf/ipWD4lrsUJMuuNi/QcIG3EsBjs63wxKzpA1+0diOAfHzXSJewTQIDAQAB
AoGBAND6GmHJrnemZnne5fF2UtuoOZNgJaAtNEpNjtDctQxtmzttavL6UjykNKTW
YFZZZjatUOgM3ULhAeTz1ltwsd9lzw+pF9CsyAOwyQNhjdO3VV+hmAinBm/32yPp
xkuqThS40pX5SRV5HZlLLm4dj90UA1bxrgr5LUQePPI9jzBBAkEA/7Q/9DDVKjie
f8Eeuh/ZElAjVve+DgmQJYkM2QOAHkCx2Zmw5hOq1TROVJUiJsSegSWWvMDnVA/w
bPboSFKOeQJBAPQOar6bj7EdSO5atrJg3jSA+SW/j30ljhERDOk3eI8bfgMYL7EG
QOG01VwoR3uyVEKY3n8i2WKGLuNwBe/Qa3UCQQCVODYeJaUwB2yPdz6cNVuy8Ss+
ZEL35CLHlMv3lLBedziSmLr/+Tg3RVf0yjbs0s8A5NOrgRM+HjMbE5eIJQ1ZAkEA
oWsPqvYUud5WqF+TSrPLBArxvsfOTcWTCzKtyWqI8I4McFuE3571NtN18rgpX2T5
Wfrl3kzcXs/FH2SuaIj/KQJBANFxrPGmyZNcGf0uiwm241+j3Pmy90+XUrmL1VYL
z1uGk3VsnRPo1SnO+f70zS3gfqodFk5Y9S0ZAj/p6uyeL2E=
-----END RSA PRIVATE KEY-----

用java代码要从这个文件中得到想要的priavtekey 可以先用命令
openssl pkcs8 -topk8 -inform PEM -outform DER -in rsa_pem.key -out pkcs8_der.key -nocrypt

对*.key文件进行转换,然后再读转换后的文件
File file = new File(keyfile);     //keyfile key文件的地址
FileInputStream in = new FileInputStream(file);
ByteArrayOutputStream bout = new ByteArrayOutputStream();
byte[] tmpbuf = new byte[1024];
int count = 0;
while ((count = in.read(tmpbuf)) != -1) {
bout.write(tmpbuf, 0, count);
tmpbuf = new byte[1024];
}
in.close();
把读的输入流转变成自己想要的privatekey
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
EncodedKeySpec privateKeySpec = new PKCS8EncodedKeySpec(bout.toByteArray());
RSAPrivateKey privateKey = (RSAPrivateKey)keyFactory.generatePrivate(privateKeySpec);
这样就可以使用privatekey对自己的文件进行加密了
//进行加密
Signature dsa = Signature.getInstance("SHA1withRSA");      //采用SHA1withRSA加密
dsa.initSign(privateKey);
dsa.update(voucher.getBytes());    //voucher需要加密的String必须变成byte类型的
byte[] sig = dsa.sign();    
byRSA=toHexString(sig);   //加密后的byte类型变成十六进制的String
分享到:
评论

相关推荐

    openssl生成证书

    1. 首先,你需要创建一个私钥(private key),使用`openssl genpkey`命令,例如: ``` openssl genrsa -out server.key 2048 ``` 这将生成一个2048位的RSA私钥,保存在server.key文件中。 2. 接着,创建证书...

    OpenSSL工具生成RSA密钥1

    在这个场景中,我们主要关注如何使用 OpenSSL 生成 RSA 密钥对,这是许多网络安全应用的基础,比如 SSL/TLS 加密、数字签名以及 SSH 连接等。 1. **安装 OpenSSL**: 在 Windows 上,你可以通过下载 OpenSSL 的 ...

    .net DSA加密(C#读取OPENSSL生成的DSA的pem文件的秘钥)

    在本资源中,我们关注的是如何使用C#来处理OpenSSL生成的PEM格式的DSA密钥。PEM(Privacy Enhanced Mail)是一种文本编码格式,通常用于存储证书和密钥,它使用Base64编码将二进制数据转化为可读的ASCII字符。 首先...

    OpenSSL生成的ssl证书

    2. **生成密钥对**:使用OpenSSL生成私钥文件,通常命名为`private.key`。运行以下命令: ``` openssl genrsa -out private.key 2048 ``` 这将生成一个2048位的RSA私钥。 3. **生成证书签名请求(CSR)**:接着,...

    Java OpenSSL生成的RSA公私钥进行数据加解密详细介绍

    将OpenSSL生成的密钥导入Java程序,可以使用`java.security.spec.RSAPrivateKeySpec`和`java.security.spec.RSAPublicKeySpec`来加载私钥和公钥的PEM格式文件。然后,使用`Cipher`类进行加解密操作: ```java ...

    openssl生成RSA私钥公钥

    - 密钥文件的权限:确保私钥文件的读取权限只限于必要的服务或用户,防止未经授权的访问。 - 定期更换密钥:为了增强安全性,建议定期更换RSA密钥对,尤其是在发现潜在安全风险时。 在使用OpenSSL生成RSA密钥对的...

    根据PEM(PKCS#8格式)文件生成DSA对象的项目源代码

    用OpenSSL 生成了公钥和私钥文件,格式为PEM的,现在用C#想要从文件中读取公钥和私钥。 生成公钥和私钥方式如下: DSA公私钥可以使用OpenSSL 生成,如下: a) 生成DSA参数 openssl dsaparam -out dsa_param.pem ...

    openssl编译过的库文件

    3. 加载证书和私钥:`SSL_CTX_use_certificate_file()`和`SSL_CTX_use_PrivateKey_file()`函数分别用于加载公钥证书和私钥文件。 4. 连接和接受:通过`SSL_new()`创建SSL连接对象,然后使用`SSL_set_SSL_CTX()`关联...

    制作RSA非对称加密证书(pfx\der)openssl

    这将在当前目录下生成一个名为`private.key`的私钥文件。 2. **创建自签名证书** 使用`openssl req`命令创建自签名证书,需要提供一些证书信息如组织名、国家等。 ``` openssl req -new -x509 -key private.key...

    RSA加密JAVA转C# JAVA转PHP,C#转JAVA

    JAVA中,密钥通常以`java.security.KeyPair`或其组成部分(`PublicKey`和`PrivateKey`)的形式存储,而C#中则是`RSACryptoServiceProvider`对象。PHP中,密钥通常以PEM格式的字符串表示。在转换时,需要将这些对象或...

    openssl库已经编译的文件

    例如,`RSA_generate_key_ex()` 可用于生成一对 RSA 密钥,而 `PEM_read_bio_RSAPrivateKey()` 和 `PEM_read_bio_RSA_PUBKEY()` 则用于从文件读取私钥和公钥。 5. **SSL 连接**:在 C++ 中创建 SSL 连接涉及创建 `...

    openssl API 函数库

    示例代码展示了如何使用OpenSSL的配置文件API来读取配置文件中的选项。 #### 九、随机数 **9.1 随机数** 随机数生成器对于密码学操作至关重要,OpenSSL提供了高质量的随机数生成功能。 **9.2 OpenSSL随机数数据...

    C#使用pem格式的密钥对文件来做RSA加解密接签名和验证签名

    C#使用pem格式的密钥对文件来做RSA加解密接签名和验证签名,这里的pem文件是openssl命令生成的密钥对文件,其中私钥pem文件需要用openssl命令转换成pkcs8格式的pem文件。如果已有pem文件,也可以通过openssl命令转换...

    利用OpenSSL把导出的Key文本转化为RSA结构

    2. **加载Key**:使用OpenSSL的`PEM_read_bio_RSAPrivateKey`或`PEM_read_bio_RSAPublicKey`函数,可以从内存或文件中读取RSA密钥。这里,你需要创建一个`BIO`对象,它是OpenSSL中的I/O抽象,可以处理内存、文件等...

    OpenSSL-RSA加解密示例

    2. **读取密钥**:在C/C++程序中,使用OpenSSL的`PEM_read_bio_RSA_PUBKEY`和`PEM_read_bio_RSAPrivateKey`函数读取公钥和私钥文件。 3. **加密**:使用公钥进行加密,主要调用`RSA_public_encrypt`函数。首先,将...

    Qt利用OpenSSl实现RSA数字签名

    同时,还要注意处理可能出现的错误,如文件读写错误、密钥加载错误等。 参考链接:[http://blog.csdn.net/usister/article/details/74390949](http://blog.csdn.net/usister/article/details/74390949) 这个...

    PHP中使用OpenSSL生成证书及加密解密

    在函数内部,它首先读取存储在指定路径下的公共密钥文件`cert_public.key`和私有密钥文件`cert_private.pem`。`openssl_pkey_get_private`函数用于获取私钥,如果私钥有效,它将返回一个资源标识符。同样,`openssl_...

    如何把OpenSSH公钥转换成OpenSSL格式.pdf

    OpenSSH公钥通常是以`.pub`文件形式存在,其格式与OpenSSL生成的公钥格式不同,这在某些场景下可能会造成不兼容问题。例如,当你需要使用OpenSSL进行加密或解密操作时,可能就需要将OpenSSH的公钥转换为OpenSSL兼容...

    openssl编程.doc

    OpenSSL提供了生成、读取和操作密钥的API,如PEM_read_bio_PUBKEY、PEM_write_bio_PrivateKey等,方便密钥的存储和交换。 2.4 X.509证书 OpenSSL可以处理X.509证书,包括证书的生成、解析和验证。X509_*系列函数可...

Global site tag (gtag.js) - Google Analytics