1、常用加密32位原因

网上很多解密加密是16位的,用32位密钥加密会报java.security.InvalidKeyException: Illegal key size or default parameters异常错误,因为美国的出口限制,Sun通过权限文件(local_policy.jar、US_export_policy.jar)做了相应限制。因此存在以下一些问题:

  • 密钥长度上不能满足需求(如:java.security.InvalidKeyException: Illegal key size or default parameters);
  • 部分算法未能支持,如MD4、SHA-224等算法;
  • API使用起来还不是很方便;
  • 一些常用的进制转换辅助工具未能提供,如Base64编码转换、十六进制编码转换等工具。

2、解决方案

Oracle在其官方网站上提供了无政策限制权限文件(Unlimited Strength Jurisdiction Policy Files),我们只需要将其部署在JRE环境中,就可以解决限制问题,特别注意:两个目录都要替换

JDK8 jar包下载地址
JDK7 jar包下载地址
jdk8 jar包百度网盘地址提取码:f5ed

%JDK_Home%\jre\lib\security目录下,对应覆盖local_policy.jar和US_export_policy.jar两个文件
%JRE_Home%\lib\security目录下,也需要对应覆盖这两个文件。

3、AES工具类


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;/*** AES常用解密加密工具类* https://github.com/ourlang* @author 小林*/
public class AesUtil {/*** 默认的字符编码*/private static final String DEFAULT_CHARSET = "utf-8";/*** 算法*/private static String ALGORITHM = "AES";/*** 算法/模式/填充**/private static final String CipherMode = "AES/ECB/PKCS5Padding";/*** 记录日志**/private final static Logger logger = LoggerFactory.getLogger(AesUtil.class);private AesUtil() {}/*** 解密AES 32位** @param sSrc      解密的内容* @param secretKey 秘钥* @return 解密后的明文 数据*/public static String decrypt(String sSrc, String secretKey) {if (secretKey == null) {logger.error("需要加密的秘钥为空");return null;}try {byte[] raw = secretKey.getBytes(DEFAULT_CHARSET);SecretKeySpec secretKeySpec = new SecretKeySpec(raw, ALGORITHM);Cipher cipher = Cipher.getInstance(CipherMode);cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);// 先用base64解密byte[] encryptedArr = Base64.getDecoder().decode(sSrc);byte[] original = cipher.doFinal(encryptedArr);return new String(original, DEFAULT_CHARSET);} catch (Exception ex) {logger.error("AES解密失败", ex);return null;}}/*** 加密32位** @param sSrc 需要加密的内容* @param sKey 秘钥* @return 加密的内容*/public static String encrypt(String sSrc, String sKey) {if (sKey == null) {logger.error("需要加密的秘钥为空");return null;}try {byte[] raw = sKey.getBytes(DEFAULT_CHARSET);SecretKeySpec skeySpec = new SecretKeySpec(raw, ALGORITHM);Cipher cipher = Cipher.getInstance(CipherMode);cipher.init(Cipher.ENCRYPT_MODE, skeySpec);byte[] encrypted = cipher.doFinal(sSrc.getBytes(DEFAULT_CHARSET));return Base64.getEncoder().encodeToString(encrypted);} catch (Exception ex) {logger.error("AES加密失败", ex);return null;}}}

java AES 32位加密解密相关推荐

  1. Go Nodejs Java Aes 128 ECB加密解密结果保持一致

    在多语言的生产环境下,常常是由一种语言进行加密而由另一种语言来进行解密,因此有必要保持各种语言之间加密解密算法的一致性.下面列出了Go,Nodejs,Java 的 Aes-128-Ecb的加密解密算法 ...

  2. java aes cfb 256_aes加密解密源码,包括aes128、aes192、aes256位,以及cbc、cfb、ecb、ofb、pcbc模式...

    AES加解密总共有以下这些 算法/模式/填充                 字节加密后数据长度       不满16字节加密后长度 AES/CBC/NoPadding                 ...

  3. java aes128加密解密_java AES 128 位加密解密算法

    最近在做app后台的服务器,使用到AES加密解密算法,无奈网上的都不符合要求,于是自己借鉴着写了一个AES加密解密工具. 密钥长度问题 默认 Java 中仅支持 128 位密钥,当使用 256 位密钥 ...

  4. java 3des 32位密钥_3des,java_java 中32位秘钥长度的 3des加密方法?,3des,java - phpStudy...

    java 中32位秘钥长度的 3des加密方法? java 中 3des加密 默认是24位秘钥的 现在需求是 32位秘钥加密 尝试很多种方法 解决 结果都不正确 // 密钥 private final ...

  5. angular和JAVA实现aes、rsa加密解密,前后端交互,前端加解密和后端JAVA加解密实现

    今天实现了下AES和RSA加密解密,主要的功能是对前后端交互数据进行加密解密,为什么要用到两个算法呢,首先RSA默认的话加密长度是有限的100多个byte吧大约,并且需要公钥私钥,而AES加密没有限制 ...

  6. Vue前端和Java后端 联调使用AES 前后端加密解密

    Vue前端和Java后端 联调使用AES 前后端加密解密 最近在项目中需要针对重要数据进行加密传输,在网上找了一大推加密方式 最终采用AES 加密 Java端 package com.zk.web.u ...

  7. 用java实现4种加密解密算法(包括:换位加密解密、替换加密解密、位加密解密、一次一密)

    案例1: 换位加密解密算法 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamR ...

  8. 用JAVA编写MD5大写32位加密

    用JAVA编写的MD5加密技术,大写的32位加密 package test;import java.io.UnsupportedEncodingException;public class MD5Te ...

  9. MD5加密,16位加密,32位加密,Base64加密,解密

    首先,16位加密与32位加密的区别,在于16位加密就是在32位加密的字符串中取中间16位,即是第9位到24位 比如现在有密码 sys 32位加密后的字符串就是 36BCBB801F5052739AF8 ...

  10. Java自制简易32位加密工具

    自制32位加密(java版) 闲来无事,自己制作32位建议加密工具,我把自己的思路和大家分享下: 下载加密程序链接:https://download.csdn.net/download/qickcao ...

最新文章

  1. 【 Linux 】Vim 使用的第一个阶段(满足基本的写代码需求)
  2. eclipse配置struts.xml自动提示
  3. 显示SAP里所有的ICON(图标)的程序
  4. idea 编译显示source1.3不支持泛型(请使用source5或更高版本)
  5. 《江湖X:汉家江湖》游戏论剑系统技术全解析
  6. 【STM32】GPIO相关函数和类型
  7. c# 从一个大图里截取图形
  8. CUL8R的完整形式是什么?
  9. Spring Cloud整合Nacos实现动态配置
  10. linux 测试网络_Linux后台开发:Linux命令系列18-ping测试网络
  11. qt designer 信号与槽_Qt信号与槽,一直无法执行自定义槽函数,是什么原因
  12. 计算机管理创建超级用户,win10家庭版怎么开启Administrator超级管理员帐户
  13. Ubuntu 下用 enca 转化文件字符编码
  14. 啊哈C语言 第8章 游戏时间到了(第29讲)
  15. java 医疗监护_医疗监护仪解决方案
  16. 阿里云大学Linux学习路线图(学+测)重磅上线!
  17. cad计算机配置要求,CAD对电脑硬件的配置要求
  18. Web安全测试工具Appscan
  19. Excel图形转入CorelDRAW技巧
  20. 根文件系统与文件系统的区别

热门文章

  1. 计算机设备灯光有哪些,多媒体教室主要有哪些设备?
  2. 《Windows CE嵌入式开发入门——基于Xscale架构》 第8章 调试与仿真
  3. 多媒体计算机组装过程,多媒体技术及《计算机组装及维护》课精彩结合.doc
  4. python字符串出栈方法_Python学习之路_day_04(字符串与列表的内置方法)
  5. git-scm.com下载文件特别慢怎么办,自己拿吧
  6. noip2013解题报告
  7. <HTML>简单登录页面代码
  8. HTML代码页面无法跳转为什么,html跳转新页面代码_html页面跳转代码
  9. 如何取json对象中的数据
  10. echarts 地图 给每个区域设置定位点图标及散点