62,635
社区成员




// 加密文件
public static void EncryptFile(String pwd, File fileIn, File fileOut)
throws Exception {
try {
// 读取文件
FileInputStream fis = new FileInputStream(fileIn);
byte[] bytIn = readbyte(fis);
// AES加密
KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128, new SecureRandom(pwd.getBytes()));
SecretKey skey = kgen.generateKey();
byte[] raw = skey.getEncoded();
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
// 写文件
byte[] bytOut = cipher.doFinal(bytIn);
FileOutputStream fos = new FileOutputStream(fileOut);
InputStream sbs = new ByteArrayInputStream(bytOut);
fos.write(readbyte(sbs));
fos.close();
fis.close();
} catch (Exception e) {
throw new Exception(e.getMessage());
}
}
// 读取InputStream转换为byte函数 ----2011-02-23 by hrg
protected static byte[] readbyte(InputStream stream) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int length = 0;
while ((length = stream.read(buffer)) > 0) {
baos.write(buffer, 0, length);
}
return baos.toByteArray();
} catch (Exception exception) {
return exception.getMessage().getBytes();
}
}
public static void EncryptFile(String pwd, File fileIn, File fileOut)
throws Exception {
try {
// ????
FileInputStream fis = new FileInputStream(fileIn);
KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128, new SecureRandom(pwd.getBytes()));
SecretKey skey = kgen.generateKey();
byte[] raw = skey.getEncoded();
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
// ???
FileOutputStream fos = new FileOutputStream(fileOut);
byte[] buffer = new byte[1024];
int length = 0;
while ((length = fis.read(buffer)) > 0) {
byte[] bytOut = cipher.doFinal(buffer, 0, length);
fos.write(bytOut, 0, byteOut.length);
}
fos.close();
fis.close();
} catch (Exception e) {
throw new Exception(e.getMessage());
}
}