java怎么实现rsa加密解密文件

   2025-02-15 3310
核心提示:要在Java中实现RSA加密和解密文件,可以使用Java Cryptography Architecture(JCA)提供的RSA算法。以下是一个简单的示例代码,

要在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个字节。您可以根据实际需要进行修改。

 
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  网站留言