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

30 篇文章 0 订阅
17 篇文章 0 订阅

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

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

导入后请注意更改引用包

作品发布:dwintergame.com 
个人开发盈利方案: 传送门 
本文版权归作者D.Winter和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值