相关疑难解决方法(0)

从文件加载RSA公钥

我已经生成了一个私钥:

openssl genrsa [-out file] –des3
Run Code Online (Sandbox Code Playgroud)

在此之后,我生成了一个公钥:

openssl rsa –pubout -in private.key [-out file]
Run Code Online (Sandbox Code Playgroud)

我想用我的私钥签署一些消息,并使用我的公钥验证其他一些消息,使用如下代码:

public String sign(String message) throws SignatureException{
    try {
        Signature sign = Signature.getInstance("SHA1withRSA");
        sign.initSign(privateKey);
        sign.update(message.getBytes("UTF-8"));
        return new String(Base64.encodeBase64(sign.sign()),"UTF-8");
    } catch (Exception ex) {
        throw new SignatureException(ex);
    }
}

public boolean verify(String message, String signature) throws SignatureException{
    try {
        Signature sign = Signature.getInstance("SHA1withRSA");
        sign.initVerify(publicKey);
        sign.update(message.getBytes("UTF-8"));
        return sign.verify(Base64.decodeBase64(signature.getBytes("UTF-8")));
    } catch (Exception ex) {
        throw new SignatureException(ex);
    }
}
Run Code Online (Sandbox Code Playgroud)

我找到了将我的私钥转换为PKCS8格式并加载它的解决方案.它适用于这样的一些代码:

public PrivateKey getPrivateKey(String filename) throws Exception {

    File f …
Run Code Online (Sandbox Code Playgroud)

java openssl rsa

98
推荐指数
3
解决办法
15万
查看次数

从PEM BASE64获取RSA私钥编码的私钥文件

我有一个私钥文件(PEM BASE64编码).我想用它来解密一些其他数据.使用Java我试图读取文件并解码其中的BASE64编码数据...这是我试过的代码片段....

import java.io.*;
import java.nio.ByteBuffer;
import java.security.*;
import java.security.spec.PKCS8EncodedKeySpec;
import com.ibm.crypto.fips.provider.RSAPrivateKey;
import com.ibm.misc.BASE64Decoder;

public class GetPrivateKey {
    public static RSAPrivateKey get() throws Exception {
        File privateKeyFile = new File("privatekey.key");
        byte[] encodedKey = new byte[(int) privateKeyFile.length()];
        new FileInputStream(privateKeyFile).read(encodedKey);
        ByteBuffer keyBytes = new BASE64Decoder().decodeBufferToByteBuffer(encodedKey.toString());
        PKCS8EncodedKeySpec privateKeySpec = new PKCS8EncodedKeySpec(keyBytes.array());
        KeyFactory kf = KeyFactory.getInstance("RSA", "IBMJCEFIPS");
        RSAPrivateKey pk = (RSAPrivateKey) kf.generatePrivate(privateKeySpec);
        return pk;
    }

    public static void main(String[] args) throws Exception {
        PrivateKey privKey = FormatMePlease.get();
        System.out.println(privKey.toString());
    }

}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

Exception in thread …
Run Code Online (Sandbox Code Playgroud)

java cryptography certificate pkcs#8 x509

28
推荐指数
6
解决办法
12万
查看次数

如何从Java生成ssh兼容的id_rsa(.pub)

我正在寻找一种在Java中以编程方式创建ssh兼容的id_rsa和id_rsa.pub文件的方法.

我创建了KeyPair:

KeyPairGenerator generator;
generator = KeyPairGenerator.getInstance("RSA");
// or: generator = KeyPairGenerator.getInstance("DSA");
generator.initialize(2048);
keyPair = generator.genKeyPair();
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何在KeyPair中创建PrivateKey和PublicKey的String表示.

java ssh openssh public-key-encryption

15
推荐指数
2
解决办法
2万
查看次数

使用来自authorized_keys的公钥和Java安全性

如何使用系统authorized_keys文件中的条目进行java.security.PublicKey实现?我特别想要将authorized_keys文件中的公钥与Apache SSHD PublickeyAuthenticator界面中提供的公钥进行比较.

java security openssh

12
推荐指数
2
解决办法
4696
查看次数

给定Java ssh-rsa PublicKey,如何构建SSH2公钥?

我正在做publicKey.getEncoded(),然后在前面添加"ssh-rsa",然后对其进行base64编码.然后我添加SSH2页眉/页脚.但它不会解码......

java ssh-keys public-key

5
推荐指数
1
解决办法
3319
查看次数

将 openSSH rsa 密钥转换为 javax.crypto.Cipher 兼容格式

有没有办法以编程方式将Jsch生成的 SSH RSA 密钥转换为可用于加密的javax.crypto.Cipher格式?我大多看到过类似的答案

openssl pkcs8 -topk8 -inform PEM -outform DER -in private_key_file -nocrypt > pkcs8_key
Run Code Online (Sandbox Code Playgroud)

但我无法访问 openSSL 或 shell 命令。顺便说一句:我只使用 JDK6。

BigInteger感谢 @erickson 的帮助,我可以使用指数和模数作为传递给 a 的类型,KeyFactory将公钥从 RFC4716 转换为 Java 公钥RSAPublicKeySpec。他的解决方案如下。

现在我正在尝试转换私钥。privateJsch.key这是使用生成的示例writePrivateKey(str filename)

-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQC0ouLgTjmKjHU6UjNSL8HyTIdFM1UdVpgU81paWKreN8L36YoT
goZQHeyyUCCHmq3r3cKaySyu93mHBY0l76qSAIRZgE1IAFkBhNWBdlJ9UYA9HXm/
MqTQHbpqz0EYGE9TsFHS8dn1/utsJxKSWZ4xPNYjfS4Ps6G84iRwfdrIbQIDAQAB
AoGAKv3xnY1AqLcRV5Yk3NS9Blwsfc3f3iG0BJh+0q3zzPvcjYCp+kbAjOTyZuYn
N98asd6P6KMk3WfNJtOtanAGWl46bmtzNsQtSr5rVQEgs2w8i2yJcwVAYf2Td4qX
m3dH+roJA/CEFRSDat4sUfjOVmsYQXIBa0W2XTpp+7T1U4ECQQD1wSR6iTz7Bja0
MPcizDbRTRQHALBf7E8j8YOLpN/IGSox9pT+ktjsI2vMaD+b3SM4s0FD8quBlppE
o5FAguHxAkEAvCrCK7eZU3H+Ul1iw9Kd3WPHjDvQcdT5rEL+NSYEZyHgU7ipXEih
UHvK47Bkte/PVIu3jBFBnMujA0XiT0gSPQJBAI3+8j/nChgU6AjHfhRaIJZgzeCZ
8k8KcFPZWWOXeUHZ4HqL+lz5pmMSuFecKJy7cn1xfZVwIs62oR5l0CiRN1ECQCui
CqaSi3ZjH6M/znA0PbEhuxsUn7BVv5OncUUnzKuRmnAviO5CVU3Rdum3dJMPydcE
Ewri0YEnY2SV5vWVc80CQH43uBbshz7ju3DdVykHFrRElQB+f0YMK3Ad7eu+us0w
dLrOOoXP0T60B/bMTo8rdMa6XU/0w/w8FsOqoxNY23U=
-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

使用openssl asn1parse -in privateJsch.key -out privateJsch.der产量:

$ openssl asn1parse …
Run Code Online (Sandbox Code Playgroud)

java security encryption ssh rsa

3
推荐指数
1
解决办法
6046
查看次数