相关疑难解决方法(0)

为什么java.security.NoSuchProviderException没有这样的提供者:BC?

jar(bcprov-jdk16-145.jar)已添加到项目中,Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider())已添加到类中,并BouncyCastleProvider.PROVIDER_NAME返回"BC"但AesFileIo.writeFile()仍然会抛出java.security.NoSuchProviderException No such provider: BC.有任何想法吗?

import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import org.bouncycastle.jce.provider.BouncyCastleProvider;

public class AesFileIo {

    private static final String AES_ALGORITHM = "AES/CTR/NoPadding";
    private static final String PROVIDER = BouncyCastleProvider.PROVIDER_NAME;
    private static final byte[] AES_KEY_128 = { // Hard coded for now
        78, -90, 42, 70, -5, 20, -114, 103,
        -99, -25, 76, 95, -85, 94, 57, 54};
    private static final byte[] IV = { // …
Run Code Online (Sandbox Code Playgroud)

java security cryptography jce

65
推荐指数
3
解决办法
11万
查看次数

从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万
查看次数

Bouncy Castle:PEMReader => PEMParser

有像PEM证书一样

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-256-CBC,B9846B5D1803E.....
Run Code Online (Sandbox Code Playgroud)

使用BC 1.46,我使用以下代码提取密钥对:

int myFunc(String pemString, char [] password) {

    ByteArrayInputStream tube = new ByteArrayInputStream(pemString.getBytes());

    Reader fRd = new BufferedReader(new InputStreamReader(tube));

    PEMReader pr = new PEMReader(fRd, new Password (password), "BC");

     try {
            Object o = pr.readObject();
            if (o instanceof KeyPair)
    .....
Run Code Online (Sandbox Code Playgroud)

现在我刚刚安装了BC 1.48,他们告诉我PEMReader已被弃用,必须由PEMParser替换.

我的问题是,AFAIK,PEMParser中没有密码的地方.

有人能举例说明如何将我的代码迁移到PEMParser版本吗?

java bouncycastle

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

如何在 Java 中将 PKCS#8 编码的 RSA 密钥转换为 PKCS#1?

是否可以将 PKCS#8 编码的 RSA 私钥转换为 PKCS#1?我知道这可以通过 openssl 轻松完成,但是可以用 Java 完成吗?

java security rsa jce pkcs#8

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

如何读取也用bouncycastle在DER中编码的PKCS8加密私钥?

我已经尝试过以下问题的答案:

有弹性的城堡:PEMReader => PEMParser

使用bouncycastle / spongycastle读取加密的私钥

但是由于我调用时我的加密密钥已编码为DER

Object object = pemParser.readObject(); 
Run Code Online (Sandbox Code Playgroud)

对象为null。

我可以使用openssl的命令将其转换为PEM(它也会解密密钥)

openssl pkcs8 -inform der -in pkey.key -out pkey.pem 
Run Code Online (Sandbox Code Playgroud)

但我需要读取其原始文件中的密钥

java cryptography bouncycastle pem der

4
推荐指数
1
解决办法
1868
查看次数

标签 统计

java ×5

cryptography ×3

bouncycastle ×2

jce ×2

pkcs#8 ×2

security ×2

certificate ×1

der ×1

pem ×1

rsa ×1

x509 ×1