gpt4 book ai didi

java RSA多重加密

转载 作者:行者123 更新时间:2023-12-02 07:30:23 25 4
gpt4 key购买 nike

我使用对称 key 加密我的消息,并且对称 key 本身必须使用不同的 RSA 公钥进一步加密。当我尝试实现上述内容时,出现以下错误:

javax.crypto.IllegalBlockSizeException: The input was invalid: Invalid input length.
at com.rsa.shareCrypto.j.hD.engineDoFinal(Unknown Source)
at javax.crypto.Cipher.doFinal(Cipher.java:2087)
at wrap1.main(wrap1.java:69)

有办法解决这个问题吗?

我需要做这样的事情[[[[key]PK-A]PK-B]PK-C],其中 PK-A = A 的公钥,类似 PK-B 和 PK-C。

下面是我尝试过的代码这是代码

String InitialKey = "2011BCSChampionA";

byte[] initkey = InitialKey.getBytes();
// First level encryption of the key

KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");

keyGen.initialize(1024);
KeyPair keypair = keyGen.genKeyPair();
PrivateKey privateKey = keypair.getPrivate();
PublicKey publicKey = keypair.getPublic();
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] cipherData = cipher.doFinal(initkey);
// Second level of encryption
KeyPairGenerator keyGen1 = KeyPairGenerator.getInstance("RSA");
keyGen1.initialize(1024);
KeyPair keypair1 = keyGen1.genKeyPair();
PrivateKey prvKey = keypair1.getPrivate();
PublicKey pubKey = keypair1.getPublic();
Cipher cipher1 = Cipher.getInstance("RSA");
cipher1.init(Cipher.ENCRYPT_MODE, pubKey);
byte[] cipherData_new = cipher1.doFinal(cipherData);

最佳答案

您应该填充数据以满足加密算法要求,或者您应该创建指向要使用的填充的 Cipher 类的实例,例如:

cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");

由于您需要使用非对称 key ,请按以下方式初始化密码:

cipher = Cipher.getInstance("RSA/ECB/PKCS5Padding");

关于java RSA多重加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13001960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com