AES/ECB/NoPadding 加减密

复制代码
 1 package unit;
 2 
 3 import javax.crypto.Cipher;
 4 import javax.crypto.spec.SecretKeySpec;
 5 
 6 import org.apache.commons.codec.binary.Base64;
 7 
 8 /**
 9  * AES/ECB/NoPadding  加密
10  * @author jia
11  */
12 public class AES_ECB {
13     private static String Padding = "AES/ECB/NoPadding";
14     /**
15      * 数据加密
16      * @param data
17      * @return
18      */
19     public static byte[] encrypt(byte[] data, byte[] key){
20         byte[] original = null;
21         try {
22             SecretKeySpec skeySpec = new SecretKeySpec(key, "AES");
23             Cipher cipher = Cipher.getInstance(Padding);
24             cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
25             original = cipher.doFinal(data);
26         } catch (Exception e) {
27             e.printStackTrace();
28         } 
29         return original;
30     }
31     
32     /**
33      * 数据解密
34      * @param encData
35      * @return
36      */
37     public static String decrypt(String encData, String key) {
38         byte[] decodeBase64 = Base64.decodeBase64(encData);
39         byte[] original = null;
40         try {
41             SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes(), "AES");
42             Cipher cipher = Cipher.getInstance(Padding);
43             cipher.init(Cipher.DECRYPT_MODE, skeySpec);
44             original = cipher.doFinal(decodeBase64);
45         } catch (Exception e) {
46             e.printStackTrace();
47         } 
48         return new String(original).trim();     
49     }
50     
51     public static void main(String[] args) throws Exception {
52 //        String str = "20171017095514800000000000000000";
53 //        String key = "f5663bc2165b9b50";
54 //        byte[] encrypt_data = encrypt(str.getBytes(), key.getBytes());
55 //        String s = decrypt(encrypt_data, key);
56 //        System.out.println("加密前: : "+str);
57 //        System.out.println("密文: : "+encrypt_data);
58 //        System.out.println("解密后:   "+s);
59     }
60 }
复制代码

 

posted @   林**  阅读(6849)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示