1. 程式人生 > >android 資源圖片加密

android 資源圖片加密

android 中有些重要的圖片資源可以選擇加密,因為不管是加固還是混淆,資原始檔的圖片始終能被看到,

加密圖片步驟

1.   建立java專案安作為加密圖片的工具,新建一個project,在main方法裡呼叫加密方法,加密方法裡傳一個路勁,這個路勁是電腦裡圖片的路勁

public static void main(String[] args){
    //呼叫加密方法
    KMD.encrypt("f:/image.png");
}
public class KMD {
    
    //加密後,會在原圖片的路徑下生成加密後的圖片
    public static void encrypt(String filePath){
        byte
[] tempbytes = new byte[5000]; try { InputStream in = new FileInputStream(filePath); OutputStream out = new FileOutputStream(filePath.subSequence(0, filePath.lastIndexOf("."))+"2.png"); while (in.read(tempbytes) != -1) {//簡單的交換 byte a = tempbytes[0]; tempbytes[0
] = tempbytes[1]; tempbytes[1] = a; out.write(tempbytes);//寫檔案 } } catch (IOException e) { e.printStackTrace(); } } }
2,把加密後的圖片放在android assets下
呼叫getImageFromAssets穿入加密後的圖片,然後解密,顯示
Bitmap   bitmap= getImageFromAssets(this,"jiamiguodetupian.png"
); if(bitmap != null) { imageView.setImage(ImageSource.bitmap(bitmap)); } else { Log.i(TAG,"圖片為空"); System.out.println("圖片為空"); }

public Bitmap getImageFromAssets(Context context, String fileName) {
    Bitmap image = null;
    AssetManager am = context.getResources().getAssets();
    try {
        InputStream is = am.open(fileName);
        byte[] buffer = new byte[1500000];//足夠大
is.read(buffer);
        for(int i=0; i<buffer.length; i+= 5000){//與加密相同
byte temp = buffer[i];
            buffer[i] = buffer[i+1];
            buffer[i+1] = temp;
        }
        image = BitmapFactory.decodeByteArray(buffer, 0, buffer.length);
        if (is!=null){
            is.close();
        }

    } catch (IOException e) {
        e.printStackTrace();

    }
    return image;
}

ok ,大功告成!有不懂可以留言。。。。