packageiie.ac.cn.asymmetric_encryption.RSA_ECB_PKCS1Padding;importorg.bouncycastle.crypto.AsymmetricCipherKeyPair;importorg.bouncycastle.crypto.engines.RSAEngine;importorg.bouncycastle.crypto.generators.RSAKeyPairGenerator;importorg.bouncycastle.crypto.params.AsymmetricKeyParameter;importorg.bouncycastle.crypto.params.RSAKeyGenerationParameters;importjava.math.BigInteger;importjava.security.SecureRandom;/**
* RSAEngine实例使用默认的填充模式:即RSA/ECB/PKCS1Padding
*/publicclassRSAECBPKCS1PaddingBouncyCastleExample{publicstaticvoidexample()throwsException{RSAKeyPairGenerator rsaKeyPairGenerator =newRSAKeyPairGenerator();SecureRandom random =newSecureRandom();RSAKeyGenerationParameters params =newRSAKeyGenerationParameters(BigInteger.valueOf(65537),// public exponent
random,// secure random generator2048,// key length80// certainty);
rsaKeyPairGenerator.init(params);AsymmetricCipherKeyPair asymmetricCipherKeyPair = rsaKeyPairGenerator.generateKeyPair();AsymmetricKeyParameter publicKey = asymmetricCipherKeyPair.getPublic();AsymmetricKeyParameter privateKey = asymmetricCipherKeyPair.getPrivate();// Get the public key// Generate some plaintext data to encryptbyte[] plaintext ="Hello, world!".getBytes("UTF-8");// Create an instance of the RSA engineRSAEngine rsa =newRSAEngine();// Encrypt the plaintext data using RSA/ECB/PKCS1Padding
rsa.init(true, publicKey);byte[] ciphertext = rsa.processBlock(plaintext,0, plaintext.length);// Print out the encrypted ciphertext in hex formatSystem.out.println(javax.xml.bind.DatatypeConverter.printHexBinary(ciphertext));}}