Android5.1 文件AES加密

发布于:2024-06-24 ⋅ 阅读:(130) ⋅ 点赞:(0)
密钥最低128bits
public class FileEncryptionUtil {

    private static final String ALGORITHM = "AES";
    private static final String TRANSFORMATION = "AES";

    /**
     * 使用AES加密算法对文件进行加密。
     *
     * @param key        用于加密的密钥。.
     * @param inputFiles  要加密的输入文件。
     * @param outputFiles 将写入加密数据的输出文件。
     * @throws Exception 如果加密过程中出现错误
     */
    public static void encryptFile(String key, String inputFiles, String outputFiles) throws Exception {
        File inputFile = new File(inputFiles);
        File outputFile = new File(outputFiles);
        Key secretKey = new SecretKeySpec(key.getBytes("UTF-8"), ALGORITHM);
        Cipher cipher = Cipher.getInstance(TRANSFORMATION);
        cipher.init(Cipher.ENCRYPT_MODE, secretKey);
        FileInputStream inputStream = new FileInputStream(inputFile);
        byte[] inputBytes = new byte[(int) inputFile.length()];
        inputStream.read(inputBytes);
        byte[] outputBytes = cipher.doFinal(inputBytes);
        FileOutputStream outputStream = new FileOutputStream(outputFile);
        outputStream.write(outputBytes);
        inputStream.close();
        outputStream.close();
    }

    /**
     * 解密使用AES加密算法加密的文件。
     *
     * @param key        用于解密的密钥。
     * @param inputFiles  要解密的输入文件。
     * @param outputFiles 将写入解密数据的输出文件
     * @throws Exception 如果在解密过程中出现错误。
     */
    public static void decryptFile(String key, String inputFiles, String outputFiles) throws Exception {
        File inputFile = new File(inputFiles);
        File outputFile = new File(outputFiles);
        Key secretKey = new SecretKeySpec(key.getBytes("UTF-8"), ALGORITHM);
        Cipher cipher = Cipher.getInstance(TRANSFORMATION);
        cipher.init(Cipher.DECRYPT_MODE, secretKey);
        FileInputStream inputStream = new FileInputStream(inputFile);
        byte[] inputBytes = new byte[(int) inputFile.length()];
        inputStream.read(inputBytes);
        byte[] outputBytes = cipher.doFinal(inputBytes);
        FileOutputStream outputStream = new FileOutputStream(outputFile);
        outputStream.write(outputBytes);
        inputStream.close();
        outputStream.close();
    }
}