Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> 【Android游戲引擎libgdx】圖片簡單加密解密生成Pixmap示例

【Android游戲引擎libgdx】圖片簡單加密解密生成Pixmap示例

編輯:Android開發實例

Android的APK只要解壓縮就可以得到裡面的資源文件,這顯得有些過於開放了。

很多時候我們發現一些廠家的產品都將資源文件進行了處理,即加密了。

接下來我們就對圖片文件進行簡單加密解密操作。

 

一、准備一張圖片,因為是在libgdx中使用,所以長寬必須是2的冪次方。

 

二、簡單異或加密

  1. String fileName = "image.jpg";//圖片名稱 
  2.         String key = "test";//密碼 
  3.  
  4.         RandomAccessFile raf = null; 
  5.          
  6.         try { 
  7.             raf = new RandomAccessFile(fileName, "rw"); 
  8.  
  9.             int value = -1; 
  10.             while ((value = raf.read()) != -1) { 
  11.                 long pointer = raf.getFilePointer(); 
  12.                 raf.seek(pointer - 1); 
  13.                 raf.write(value ^ key.hashCode()); 
  14.                 //每個字節異或密碼,請保證解密時密碼前後相同 
  15.             } 
  16.  
  17.         } catch (FileNotFoundException e) { 
  18.             e.printStackTrace(); 
  19.         } catch (IOException e) { 
  20.             e.printStackTrace(); 
  21.         } finally { 
  22.             try { 
  23.                 raf.close(); 
  24.             } catch (Exception e) { 
  25.                 e.printStackTrace(); 
  26.             } 
  27.         } 

三、加密後的圖片我們將無法再預覽。我們可以將圖片的擴展名改成dat,進一步的混淆。

四、解密並顯示

  1. public void Load(){ 
  2.         String key = "test"; 
  3.         InputStream is = null; 
  4.         int value = -1; 
  5.         byte[] bs = new byte[76583]; 
  6.         int cx = 0; 
  7.         try { 
  8.             is = this.getAssets().open("image.dat"); 
  9.             while ((value = is.read()) != -1) { 
  10.                 bs[cx] = (byte) (value ^ key.hashCode()); 
  11.                 cx++; 
  12.             } 
  13.         } catch (IOException e) { 
  14.             e.printStackTrace(); 
  15.         } finally { 
  16.             try { 
  17.                 is.close(); 
  18.             } catch (IOException e) { 
  19.                 e.printStackTrace(); 
  20.             } 
  21.         } 
  22.         pixmap = new Pixmap(bs, 0, bs.length); 
  23.     } 

解密與加密相同,都是每字節異或密碼。

byte[] bs = new byte[76583];

這裡我們需要自定義內存大小,查看文件的屬性,查看大小。

 

五、查看源碼 DwinterGdxDemo01

導入後請注意更改引用包

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved