图片加密解密

创建java项目
运行java main,会在图片路劲下生成加密后的图片
package com.example;

public class MyClass {
public static void main(String[] args){
//加密图片的路劲
KMD1.encrypt(“F:/metro.png”);
}
}

加密的类
public class KMD1 {

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();
    }
}

}

android 里调用解密的方法、然后显示图片
Bitmap bitmap=getImageFromAssets(MainTab02.this.getActivity(),”beijing2.png”);
if(bitmap != null) {
imageView.setImage(ImageSource.bitmap(bitmap));
} else {
Log.i(TAG,”图片为空”);
System.out.println(“图片为空”);
}

public static 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

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
为了在Android中实现图片资源加密解密,我们可以使用以下步骤: 1. 将图片转换为字节数组 2. 使用加密算法(如AES)对字节数组进行加密 3. 将加密后的字节数组保存到文件中,以自定义格式作为文件扩展名(如“.enc”) 4. 在应用程序中使用Glide加载图片时,使用自定义的解密器将加密的图片解密为原始字节数组 5. 将解密后的字节数组作为参数传递给Glide加载图片 以下是一个简单的示例代码,演示了如何使用AES加密和解密图片资源: 加密代码: ```java public static void encryptImage(Context context, int resourceId, String outputPath) throws Exception { InputStream inputStream = context.getResources().openRawResource(resourceId); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int length; while ((length = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, length); } byte[] data = outputStream.toByteArray(); outputStream.close(); inputStream.close(); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); SecretKeySpec keySpec = new SecretKeySpec("my-secret-key-123".getBytes(), "AES"); IvParameterSpec ivSpec = new IvParameterSpec("my-iv-parameter-456".getBytes()); cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec); byte[] encryptedData = cipher.doFinal(data); FileOutputStream fileOutputStream = new FileOutputStream(outputPath); fileOutputStream.write(encryptedData); fileOutputStream.close(); } ``` 解密代码: ```java public static byte[] decryptImage(Context context, Uri uri) throws Exception { InputStream inputStream = context.getContentResolver().openInputStream(uri); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int length; while ((length = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, length); } byte[] encryptedData = outputStream.toByteArray(); outputStream.close(); inputStream.close(); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); SecretKeySpec keySpec = new SecretKeySpec("my-secret-key-123".getBytes(), "AES"); IvParameterSpec ivSpec = new IvParameterSpec("my-iv-parameter-456".getBytes()); cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec); byte[] data = cipher.doFinal(encryptedData); return data; } ``` 在应用程序中使用Glide加载解密后的图片: ```java Glide.with(context) .load(Uri.parse("file:///android_asset/image.enc")) .asBitmap() .format(new CustomImageFormat()) .decoder(new CustomImageDecoder()) .into(imageView); ``` 其中,CustomImageFormat用于指定自定义图片格式的文件扩展名(如“.enc”),CustomImageDecoder用于实现自定义的解密器,将加密的图片资源解密为原始字节数组。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

遥不可及zzz

我会用心写更多自己的经验。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值