简单的加密部分资源

本文介绍了一种简单的文件加密方法,通过使用特定的魔术数字进行异或操作来加密和解密文件内容。这种方法适用于不需要高度安全性的场景,可以防止普通用户直接从SD卡读取文件内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个呢 不是我弄的只是看到的,只是用作者的话说 如果别人真想知道怎么加密都是虚的

只是为了不让简单的从sd卡内直接看到而已

 

原理就是自己写一个流通过与或 简单转一下而已

File assets = new File(Environment.getExternalStorageDirectory(),"assets"); 
ZipInputStream zip = new ZipInputStream(new TranslateInputStream(assets)); 

 

然后就是关键的

private static final byte MAGIC_NUMBER = 13; 
 
private void translateBuffer(byte[] buffer) { 
   
for (int i = 0;i < buffer.length;i++) { 
        buffer
[i] ^= MAGIC_NUMBER; 
   
} 
} 
 
private class TranslateOutputStream extends FileOutputStream { 
   
public TranslateOutputStream(File file) throws FileNotFoundException { 
       
super(file); 
   
} 
 
   
@Override 
   
public void write(int oneByte) throws IOException { 
        oneByte
^= MAGIC_NUMBER; 
       
super.write(oneByte); 
   
} 
 
   
//In Android write(byte[]) calls this method so we don't need to override both         
   
@Override 
   
public void write(byte[] buffer, int offset, int count) 
           
throws IOException { 
        translateBuffer
(buffer); 
       
super.write(buffer, offset, count); 
   
} 
} 
 
private class TranslateInputStream extends FileInputStream { 
 
   
public TranslateInputStream(File file) throws FileNotFoundException { 
       
super(file); 
   
} 
 
   
@Override 
   
public int read() throws IOException { 
       
return super.read() ^ MAGIC_NUMBER; 
   
} 
 
   
//In Android read(byte[]) calls this method so we don't need to override both         
   
@Override 
   
public int read(byte[] buffer, int offset, int count) 
           
throws IOException { 
       
int bytesRead = super.read(buffer, offset, count); 
        translateBuffer
(buffer); 
       
return bytesRead; 
   
} 
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值