图片文件加密解密工具类

news/2024/11/23 1:41:16/

存储身份证正反面,认证文件等用的工具类,存储在oss中是不可以直接查看的图片文件,需要经过解密才行

import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
public class ImageEncryptionExample {public static void main(String[] args) {String originalImagePath = "E:\\1.jpg";String encryptedImagePath = "E:\\2.jpg";String decryptedImagePath = "E:\\3.jpg";String key = "WxappEncrypteKey"; // 密钥,必须是16个字符长度的字符串try {// 读取原始图片byte[] originalImageBytes = Files.readAllBytes(Paths.get(originalImagePath));// 加密图片byte[] encryptedImageBytes = encrypt(originalImageBytes, key);// 将加密后的图片保存到文件Files.write(Paths.get(encryptedImagePath), encryptedImageBytes);// 读取加密后的图片byte[] encryptedImageBytesFromFile = Files.readAllBytes(Paths.get(encryptedImagePath));// 解密图片byte[] decryptedImageBytes = decrypt(encryptedImageBytesFromFile, key);// 将解密后的图片保存到文件Files.write(Paths.get(decryptedImagePath), decryptedImageBytes);System.out.println("图片加密解密完成!");} catch (IOException | NoSuchAlgorithmException | NoSuchPaddingException |InvalidKeyException | IllegalBlockSizeException | BadPaddingException e) {e.printStackTrace();}}private static byte[] encrypt(byte[] input, String key) throws NoSuchAlgorithmException,NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {SecretKey secretKey = new SecretKeySpec(key.getBytes(), "AES");Cipher cipher = Cipher.getInstance("AES");cipher.init(Cipher.ENCRYPT_MODE, secretKey);return cipher.doFinal(input);}private static byte[] decrypt(byte[] input, String key) throws NoSuchAlgorithmException,NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {SecretKey secretKey = new SecretKeySpec(key.getBytes(), "AES");Cipher cipher = Cipher.getInstance("AES");cipher.init(Cipher.DECRYPT_MODE, secretKey);return cipher.doFinal(input);}
}

http://www.ppmy.cn/news/773624.html

相关文章

appium遇到的问题(android7.0找不到控件 无法点击控件)

环境: appium版本:appium 1.4.16.1 android版本:android7.1 问题:android7.0找不到控件无法点击控件 解决方法: 1.android7.0以上需要使用appium1.6.3的版本 2.设置caps时添加:automationName:uiautomator…

vivoy73s和iqooz1哪个好

Vivo y73s::配备6.44英寸AMOLED材质屏幕,24001080分辨率,90.1%屏幕比例,1670万色,P3色域,支持hdr10。吗?机身尺寸为16174.047.73mm,重量约为171.3g。 vivo手机爆降600这活动太给力了 机会不容错…

手机进程设置多少个最好_vivo手机越用越卡?1键关闭这5个设置,手机再用3年!永不卡顿...

vivo手机越用越卡?这可能是最大错觉了!只要你关闭下面的这些设置,手机用到2035年!接下来就带大家一起看看吧! 1.账户清理 手机的缓存很多?这可能是10年前的事情了!现在手机里面其实都是数据内容!只要我们把无关的数据删除就可以啦,特别是一些不常用到的应用!当然类似…

Python核心技术总结

第一章 变量和数据类型 1.1 变量 变量命名规则 字母数字下划线组合,但不能数字开头变量名不能包含空格不能使用Python保留的特殊用途单词变量简短,知名见义慎用小写字母l和大写数字O,会被误认为数字1 和0Python中的变量一律使用小写,这与其…

vivoY77和荣耀X40i 哪个好

vivoY77是1499元起步,荣耀X40i是1599元,到了12256版本时,两款手机价格才算同步,时1999元,同样的价格对比更有有意思! 性能上荣耀直接差一大截,荣耀X40i搭载天玑700处理器,台积电7nm…

聊聊一个程序员一生中可能会邂逅各种各样的算法

文章目录 一个程序员一生中可能会邂逅各种各样的算法,但总有那么几种,是作为一个程序员一定会遇见且大概率需要掌握的算法。今天就来聊聊这些十分重要的“必抓!”算法吧~*一、引言二、 常见算法介绍三、重点算法总结动态规划算法:用于解决最优化问题,如最短路径问题,最长…

Android 画面显示流程一

DRM,英文全称 Direct Rendering Manager, 即 直接渲染管理器。 DRM是linux内核的一个子系统,提供一组API,用户空间程序,可以通过它,发送画面数据到GPU或者专用图形处理硬件,也可以使用它执行诸如配置分辨率,刷新率之类的设置操作。原本是设计提供PC设备支持复杂的图形设。…

【HarmonyOS】元服务启动命令漫谈

在日常开发中,我们可以通过DevEco Studio,直接Run我们的元服务工程,在测试机上拉起我们开发的元服务页面。但是我们自己打包HarmonyOS元服务hap在手机上安装后是没有桌面图标的。虽然我们可以在设置的服务管理中找到我们安装的元服务&#xf…