文件加密
import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import java.io.File; import java.io.FileReader; import java.security.SecureRandom; /** * 文件加密 */ public class FileEncrypt { private static final String password = "9588028820109132570743325311898426347857298773549468758875018579537757772163084478873699447306034466200616411960574122434059469100235892702736860872901247123456"; public static String encrypt(String filePath) throws Exception { StringBuilder builder = new StringBuilder(); File file = new File(filePath); FileReader fileReader = new FileReader(file); int ch = -1; while( (ch=fileReader.read()) != -1 ){ builder.append((char)ch); } fileReader.close(); return HexUtils.toHex(FileEncrypt.encrypt(builder.toString().getBytes(), password)); } public static String decrypt(String hexValue){ return new String(FileEncrypt.decrypt(HexUtils.toBytes(hexValue), password)); } /** * 加密 * * @param datasource byte[] * @param password String * @return byte[] */ private static byte[] encrypt(byte[] datasource, String password) { try { SecureRandom random = new SecureRandom(); DESKeySpec desKey = new DESKeySpec(password.getBytes()); //创建一个密匙工厂,然后用它把DESKeySpec转换成 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey securekey = keyFactory.generateSecret(desKey); //Cipher对象实际完成加密操作 Cipher cipher = Cipher.getInstance("DES"); //用密匙初始化Cipher对象 cipher.init(Cipher.ENCRYPT_MODE, securekey, random); //现在,获取数据并加密 //正式执行加密操作 return cipher.doFinal(datasource); } catch (Throwable e) { e.printStackTrace(); } return null; } /** * 解密 * * @param src byte[] * @param password String * @return byte[] * @throws Exception */ private static byte[] decrypt(byte[] src, String password){ try { // DES算法要求有一个可信任的随机数源 SecureRandom random = new SecureRandom(); // 创建一个DESKeySpec对象 DESKeySpec desKey = new DESKeySpec(password.getBytes()); // 创建一个密匙工厂 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); // 将DESKeySpec对象转换成SecretKey对象 SecretKey securekey = keyFactory.generateSecret(desKey); // Cipher对象实际完成解密操作 Cipher cipher = Cipher.getInstance("DES"); // 用密匙初始化Cipher对象 cipher.init(Cipher.DECRYPT_MODE, securekey, random); // 真正开始解密操作 return cipher.doFinal(src); }catch (Exception e){ e.printStackTrace(); } return null; } }
内容加载中...

浙公网安备 33010602011771号