要在Java中实现RSA加密和解密文件,可以使用Java Cryptography Architecture(JCA)提供的RSA算法。以下是一个简单的示例代码,用于加密和解密文件。
导入必要的类和包:import java.io.FileInputStream;import java.io.FileOutputStream;import java.security.Key;import java.security.KeyPair;import java.security.KeyPairGenerator;import java.security.PrivateKey;import java.security.PublicKey;import java.security.Security;import javax.crypto.Cipher;import org.bouncycastle.jce.provider.BouncyCastleProvider;添加Bouncy Castle作为JCA的提供者:Security.addProvider(new BouncyCastleProvider());生成RSA密钥对:KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA", "BC");keyGen.initialize(2048);KeyPair keyPair = keyGen.generateKeyPair();PrivateKey privateKey = keyPair.getPrivate();PublicKey publicKey = keyPair.getPublic();加密文件:Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding", "BC");cipher.init(Cipher.ENCRYPT_MODE, publicKey);FileInputStream inputFile = new FileInputStream("input.txt");FileOutputStream outputFile = new FileOutputStream("encrypted.txt");byte[] inputBytes = new byte[245];int bytesRead;while ((bytesRead = inputFile.read(inputBytes)) != -1) { byte[] outputBytes = cipher.doFinal(inputBytes, 0, bytesRead); outputFile.write(outputBytes);}解密文件:cipher.init(Cipher.DECRYPT_MODE, privateKey);inputFile = new FileInputStream("encrypted.txt");outputFile = new FileOutputStream("decrypted.txt");byte[] encryptedBytes = new byte[256];while ((bytesRead = inputFile.read(encryptedBytes)) != -1) { byte[] decryptedBytes = cipher.doFinal(encryptedBytes, 0, bytesRead); outputFile.write(decryptedBytes);}请注意,上述代码使用Bouncy Castle作为JCA的提供者,并假设输入文件名为"input.txt",加密后的文件名为"encrypted.txt",解密后的文件名为"decrypted.txt"。此外,还假设输入文件不超过245个字节,加密后的文件长度为256个字节。您可以根据实际需要进行修改。