aes文件读取

android:

public class AesFileIo { 
    private static final String EOL = "\n"; 
    private static final String AES_ALGORITHM = "AES/CTR/NoPadding"; 
    private SecretKeySpec secretKeySpec; 
    private IvParameterSpec ivSpec; 
    private static final String PROVIDER = "BC";  
 
    AesFileIo(byte[] aesKey, byte[] iv) { 
        ivSpec = new IvParameterSpec(iv); 
        secretKeySpec = new SecretKeySpec(aesKey, "AES"); 
    } 
 
    public String readFile(Context c, String fileName) { 
        StringBuilder stringBuilder = new StringBuilder(); 
        try { 
            InputStream is = c.openFileInput(fileName); 
            Cipher cipher = Cipher.getInstance(AES_ALGORITHM, PROVIDER); 
            cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivSpec); 
            CipherInputStream cis = new CipherInputStream(is, cipher); 
            InputStreamReader isr = new InputStreamReader(cis); 
            BufferedReader reader = new BufferedReader(isr); 
            String line; 
            while ((line = reader.readLine()) != null) { 
                stringBuilder.append(line).append(EOL); 
            } 
            is.close(); 
        } catch (java.io.FileNotFoundException e) { 
            // OK, file probably not created yet 
            Log.i(this.getClass().toString(), e.getMessage(), e); 
        } catch (Exception e) { 
            Log.e(this.getClass().toString(), e.getMessage(), e); 
        } 
        return stringBuilder.toString(); 
    } 
 
    public void writeFile(Context c, String fileName, String theFile) { 
        try { 
            Cipher cipher = Cipher.getInstance(AES_ALGORITHM, PROVIDER);  
            cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivSpec); 
            byte[] encrypted = cipher.doFinal(theFile.getBytes());  
            OutputStream os = c.openFileOutput(fileName, 0); 
            os.write(encrypted); 
            os.flush(); 
            os.close(); 
        } catch (Exception e) { 
            Log.e(this.getClass().toString(), e.getMessage(), e); 
        } 
    } 
} 

 

pc

public class AesFileIo { 
 
    private static final String EOL = "\n"; 
    private static final String AES_ALGORITHM = "AES/CTR/NoPadding"; 
    private SecretKeySpec secretKeySpec; 
    private IvParameterSpec ivSpec; 
 
    AesFileIo(byte[] aesKey, byte[] iv) { 
        Security.addProvider(new org.bouncycastle.jce.provider 
                .BouncyCastleProvider()); 
        ivSpec = new IvParameterSpec(iv); 
        secretKeySpec = new SecretKeySpec(aesKey, "AES"); 
    } 
 
    public String readFile(String fileName) { 
        StringBuilder stringBuilder = new StringBuilder(); 
        try { 
            FileInputStream fis = new FileInputStream(fileName); 
            Cipher cipher = Cipher.getInstance(AES_ALGORITHM); 
            cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivSpec); 
            CipherInputStream cis = new CipherInputStream(fis, cipher); 
            InputStreamReader isr = new InputStreamReader(cis); 
            BufferedReader reader = new BufferedReader(isr); 
            String line; 
            while ((line = reader.readLine()) != null) { 
                stringBuilder.append(line).append(EOL); 
            } 
            fis.close(); 
        } catch (java.io.FileNotFoundException e) { 
            System.out.println("FileNotFoundException: probably OK"); 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
        return stringBuilder.toString(); 
    } 
 
    public void writeFile(String fileName, String theFile) { 
        try { 
            Cipher cipher = Cipher.getInstance(AES_ALGORITHM); 
            cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivSpec); 
            byte[] encrypted = cipher.doFinal(theFile.getBytes()); 
            FileOutputStream fos = new FileOutputStream(fileName); 
            fos.write(encrypted); 
            fos.flush(); 
            fos.close(); 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
    } 
} 

 

你可能感兴趣的:(C++,c,android,C#,OS)