如何在Java中以非对称加密生成密钥对?

山姆

我试图在Java中以非对称加密生成密钥对,但出现invalid key exception错误,它说No installed provider supports this key: sun.security.rsa.RSAPrivateCrtKeyImpl

private static byte[] encrypt(byte[] inpBytes, PrivateKey prvk,
      String xform) throws Exception {
    Cipher cipher = Cipher.getInstance(xform);
    cipher.init(Cipher.ENCRYPT_MODE, prvk);
    return cipher.doFinal(inpBytes);
}

@Override
public byte[] uploadFile(byte[] data, String name, String file, int size)
      throws RemoteException {
    // TODO Auto-generated method stub
    byte[] keyss=null;
    try {
        OutputStream out =
          new FileOutputStream(new File("C:\\Users\\Amaresh\\Documents\\Cloud\\"
          + name + "\\" + file));
        String xform = "DES/CTR/NoPadding";
        KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); // Original
        kpg.initialize(1024); // 512 is the keysize.//try 1024 biit
        KeyPair kp = kpg.genKeyPair();
        PublicKey pubk = kp.getPublic();
        PrivateKey prvk = kp.getPrivate();
        keyss = pubk.getEncoded();
        byte[] encBytes = encrypt(data, prvk, xform);
        System.out.println("Keypair generated");
        out.write(encBytes, 0, encBytes.length);
        out.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (NoSuchAlgorithmException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (NoSuchProviderException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return keyss;
}

我只想进行非对称加密,即使用私钥加密数据并存储公钥以对其进行解密。我是一个初学者,对我的直率错误感到抱歉。

bspencer

您正在正确生成密钥。

KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(1024);
KeyPair keys = kpg.generateKeyPair();

问题出在您:

byte[] encBytes = encrypt(data, prvk, xform);

最有可能是因为您要传递字符串“ DES / CTR / NoPadding”。您不能使用带有RSA密钥对的DES进行加密。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

由于指数大小有限,如何在 C# 中创建非对称密钥?

来自分类Dev

使用加密模块从node.js中的Curve25519(或X25519)非对称密钥对生成共享秘密密钥

来自分类Dev

如何不依靠已安装的密钥环等在命令行上进行非对称加密?

来自分类Dev

静态非对称加密

来自分类Dev

非对称加密

来自分类Dev

如何确定OpenPGP加密是对称还是非对称?

来自分类Dev

为什么我不能在 SQL Server 中为 dll 生成非对称密钥?

来自分类Dev

如何在非对称加密(libsodium)中使用随机数?

来自分类Dev

在PHP中如何在没有硬编码密钥的情况下进行对称加密

来自分类Dev

在PHP中如何在没有硬编码密钥的情况下进行对称加密

来自分类Dev

如何在 SNMP4J 中使用非对称密钥或证书身份验证?

来自分类Dev

如何删除numpy数组中的非对称对?

来自分类Dev

Jasypt和非对称加密

来自分类Dev

JWT使用非对称加密

来自分类Dev

如何将BCrypt用于RSA(非对称加密)

来自分类Dev

HTTPS使用非对称或对称加密?

来自分类Dev

如何在Java PKCS12密钥库中存储对称密钥

来自分类Dev

如何导出对称加密密钥?

来自分类Dev

如果使用非对称密钥加密的消息损坏,会发生什么情况?

来自分类Dev

如何在Android上创建非对称布局

来自分类Dev

使用KeyCzar的Android非对称加密

来自分类Dev

使用KeyCzar的Android非对称加密

来自分类Dev

非对称Android RSA加密-.NET

来自分类Dev

本地模式下的非对称加密?

来自分类Dev

如何在Android Keystore中存储对称密钥

来自分类Dev

为什么非对称密钥更安全?

来自分类Dev

从 jPBC 保存和加载非对称密钥

来自分类Dev

如何使用PHP中的对称密钥算法对结果中没有元字符的数据进行加密

来自分类Dev

SSH何时使用非对称和对称加密?

Related 相关文章

  1. 1

    由于指数大小有限,如何在 C# 中创建非对称密钥?

  2. 2

    使用加密模块从node.js中的Curve25519(或X25519)非对称密钥对生成共享秘密密钥

  3. 3

    如何不依靠已安装的密钥环等在命令行上进行非对称加密?

  4. 4

    静态非对称加密

  5. 5

    非对称加密

  6. 6

    如何确定OpenPGP加密是对称还是非对称?

  7. 7

    为什么我不能在 SQL Server 中为 dll 生成非对称密钥?

  8. 8

    如何在非对称加密(libsodium)中使用随机数?

  9. 9

    在PHP中如何在没有硬编码密钥的情况下进行对称加密

  10. 10

    在PHP中如何在没有硬编码密钥的情况下进行对称加密

  11. 11

    如何在 SNMP4J 中使用非对称密钥或证书身份验证?

  12. 12

    如何删除numpy数组中的非对称对?

  13. 13

    Jasypt和非对称加密

  14. 14

    JWT使用非对称加密

  15. 15

    如何将BCrypt用于RSA(非对称加密)

  16. 16

    HTTPS使用非对称或对称加密?

  17. 17

    如何在Java PKCS12密钥库中存储对称密钥

  18. 18

    如何导出对称加密密钥?

  19. 19

    如果使用非对称密钥加密的消息损坏,会发生什么情况?

  20. 20

    如何在Android上创建非对称布局

  21. 21

    使用KeyCzar的Android非对称加密

  22. 22

    使用KeyCzar的Android非对称加密

  23. 23

    非对称Android RSA加密-.NET

  24. 24

    本地模式下的非对称加密?

  25. 25

    如何在Android Keystore中存储对称密钥

  26. 26

    为什么非对称密钥更安全?

  27. 27

    从 jPBC 保存和加载非对称密钥

  28. 28

    如何使用PHP中的对称密钥算法对结果中没有元字符的数据进行加密

  29. 29

    SSH何时使用非对称和对称加密?

热门标签

归档