gpt4 book ai didi

java - 使用 BouncyCaSTLe 加密字符串的问题

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

我在尝试使用 BouncyCaSTLe 加密和解密字符串时遇到问题。

我正在遵循 http://www.aviransplace.com/2004/10/12/using-rsa-encryption-with-java/ 上的示例我的代码如下所示:

public class Cryptotests {

public static final String ALGORITHM = "RSA";

/**
* @param args the command line arguments
*/
public static void main(String[] args) {

try {
init();
KeyPair kp = generateKey();
byte[] enc = encrypt("The Fat Cat Jumped Over the Bat".getBytes("UTF8"), kp.getPublic());
byte[] dec = decrypt(enc, kp.getPrivate());
} catch (Exception ex) {
Logger.getLogger(Cryptotests.class.getName()).log(Level.SEVERE, null, ex);
}
}

public static void init() {
Security.addProvider(new BouncyCastleProvider());
}

public static KeyPair generateKey() throws NoSuchAlgorithmException {
KeyPairGenerator keyGen = KeyPairGenerator.getInstance(ALGORITHM);
keyGen.initialize(1024);
KeyPair key = keyGen.generateKeyPair();
return key;
}

/**
* Encrypt a text using public key.
*
* @param text The original unencrypted text
* @param key The public key
* @return Encrypted text
* @throws java.lang.Exception
*/
public static byte[] encrypt(byte[] text, PublicKey key) throws Exception {

byte[] cipherText = null;
// get an RSA cipher object and print the provider
Cipher cipher = Cipher.getInstance(
"RSA / ECB / PKCS1Padding");
System.out.println(
"nProvider is:" + cipher.getProvider().getInfo());

// encrypt the plaintext using the public key
cipher.init(Cipher.ENCRYPT_MODE, key);
cipherText = cipher.doFinal(text);
return cipherText;

}

/**
* Decrypt text using private key
*
* @param text The encrypted text
* @param key The private key
* @return The unencrypted text
* @throws java.lang.Exception
*/
public static byte[] decrypt(byte[] text, PrivateKey key) throws Exception {

byte[] dectyptedText = null;
// decrypt the text using the private key
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.DECRYPT_MODE, key);
dectyptedText = cipher.doFinal(text);
return dectyptedText;
}
}

当我运行此代码时,我最终遇到错误:

May 21, 2013 10:20:31 AM cryptotests.Cryptotests main
SEVERE: null
java.security.InvalidKeyException: Illegal key size or default parameters
at javax.crypto.Cipher.checkCryptoPerm(Cipher.java:1011)
at javax.crypto.Cipher.init(Cipher.java:1209)
at javax.crypto.Cipher.init(Cipher.java:1153)
at cryptotests.Cryptotests.encrypt(Cryptotests.java:70)
at cryptotests.Cryptotests.main(Cryptotests.java:34)

我真的是个新手,老实说,当谈到密码学时,我感到有点迷失。我的目标是解决这个问题,以便我可以使用 SHA512 和 4k 长度创建和使用 RSA key 对。我很难找到如何实现这一目标的清晰示例。

最佳答案

需要安装 Unlimited Java Cryptography Extension (JCE) Unlimited Strength

http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html

关于java - 使用 BouncyCaSTLe 加密字符串的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16676062/

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