您的位置:首页 > 移动开发 > Android开发

Android 游戏引擎libgdx 图片简单加密解密 生成Pixmap

2012-04-24 08:44 495 查看
Android的APK只要解压缩就可以得到里面的资源文件,这显得有些过于开放了。

很多时候我们发现一些厂家的产品都将资源文件进行了处理,即加密了。

接下来我们就对图片文件进行简单加密解密操作。

一、准备一张图片,因为是在libgdx中使用,所以长宽必须是2的幂次方。



二、简单异或加密

String fileName = "image.jpg";//图片名称
String key = "test";//密码

RandomAccessFile raf = null;

try {
raf = new RandomAccessFile(fileName, "rw");

int value = -1;
while ((value = raf.read()) != -1) {
long pointer = raf.getFilePointer();
raf.seek(pointer - 1);
raf.write(value ^ key.hashCode());
//每个字节异或密码,请保证解密时密码前后相同
}

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
raf.close();
} catch (Exception e) {
e.printStackTrace();
}
}


三、加密后的图片我们将无法再预览。我们可以将图片的扩展名改成dat,进一步的混淆。

四、解密并显示

public void Load(){
String key = "test";
InputStream is = null;
int value = -1;
byte[] bs = new byte[76583];
int cx = 0;
try {
is = this.getAssets().open("image.dat");
while ((value = is.read()) != -1) {
bs[cx] = (byte) (value ^ key.hashCode());
cx++;
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
pixmap = new Pixmap(bs, 0, bs.length);
}


解密与加密相同,都是每字节异或密码。

byte[] bs = new byte[76583];

这里我们需要自定义内存大小,查看文件的属性,查看大小。



五、查看源码 DwinterGdxDemo01

导入后请注意更改引用包

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐