哦,好的
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import javax.crypto.Cipher;
public class RSAEncrypt {
static KeyPairGenerator keyPairGen;
static KeyPair keyPair;
static RSAPrivateKey privateKey;
static RSAPublicKey publicKey;
static{
try {
//实例类型
keyPairGen = KeyPairGenerator.getInstance("RSA");
//初始化长度
keyPairGen.initialize(512);
//生成KeyPair
keyPair = keyPairGen.generateKeyPair();
// Generate keys
privateKey = (RSAPrivateKey) keyPair.getPrivate();
publicKey = (RSAPublicKey) keyPair.getPublic();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 加密文件
* @param encrypt RSAEncrypt对象
* @param file 源文件
* @param newFile 目标文件
*/
public void encryptFile(RSAEncrypt encrypt, File file, File newFile) ;
/**
* 解密文件
* @param encrypt RSAEncrypt对象
* @param file 源文件
* @param newFile 目标文件
*/
public void decryptFile(RSAEncrypt encrypt, File file, File newFile) ;
/**
* 加密实现
*
* @return byte[] 加密后的字节数组
*/
protected byte[] encrypt(RSAPublicKey publicKey, byte[] obj) ;
/**
* 解密实现
*
* @return byte[] 解密后的字节数组
*/
protected byte[] decrypt(RSAPrivateKey privateKey, byte[] obj)
我测试了下,.doc .txt均可以加密
因为加密解密均是根据那四个属性来的,所以你需要写个每次运行先读取属性,你可以写入文件
若文件不存在则新生成一组,当加密完成后把四个属性写入文件。
我以上写的只是测试,加解密未分开的