我有类似的问题,加密/解密我提出了这个解决方案:
public static byte[] generateKey(String password) throws Exception
{
byte[] keyStart = password.getBytes("UTF-8");
KeyGenerator kgen = KeyGenerator.getInstance("AES");
SecureRandom sr = SecureRandom.getInstance("SHA1PRNG""Crypto");
sr.setSeed(keyStart);
kgen.init(128sr);
SecretKey skey = kgen.generateKey();
return skey.getEncoded();
}
public static byte[] encodeFile(byte[] keybyte[] fileData) throws Exception
{
SecretKeySpec skeySpec = new SecretKeySpec(key"AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODEskeySpec);
byte[] encrypted = cipher.doFinal(fileData);
return encrypted;
}
public static byte[] decodeFile(byte[] keybyte[] fileData) throws Exception
{
SecretKeySpec skeySpec = new SecretKeySpec(key"AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODEskeySpec);
byte[] decrypted = cipher.doFinal(fileData);
return decrypted;
}
要将加密文件保存到sd,请执行以下操作:
File file = new File(Environment.getExternalStorageDirectory() + File.separator + "your_folder_on_sd""file_name");
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file));
byte[] yourKey = generateKey("password");
byte[] filesBytes = encodeFile(yourKeyyourByteArrayContainigDataToEncrypt);
bos.write(fileBytes);
bos.flush();
bos.close();
解码文件使用:
byte[] yourKey = generateKey("password");
byte[] decodedData = decodeFile(yourKeybytesOfYourFile);
对于将文件读入字节数组,有不同的方法。例如:http://examples.javacodegeeks.com/core-java/io/fileinputstream/read-file-in-byte-array-with-fileinputstream/
该博客介绍了如何使用AES算法对文件进行加密和解密,并将加密后的文件保存到SD卡上。提供了生成密钥、加密文件和解密文件的Java方法。在Android环境下,文件读写和AES加密解密过程清晰易懂。

3万+






