关于AES加密算法在linux下解密失败的解决办法

前段时间项目要部署到linux上时遇到了这个问题,百度一下找到了解决方案,在这分享一下:

public class RSAEncrypt {
// 密钥
private static Key key;
// KEY种子
private static String KEY_STR = "keyString";
// 常量
public static final String UTF_8 = "UTF-8";
public static final String AES = "AES";
// 静态初始化
static {
try {
// KEY 生成器
KeyGenerator generator = KeyGenerator.getInstance(AES);
// 初始化算法,设置成“SHA1PRNG”是为了防止在linux环境下随机生成算法
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
secureRandom.setSeed(KEY_STR.getBytes(UTF_8));
//128,192,256
generator.init(128,secureRandom);
// 生成密钥
key = generator.generateKey();
generator = null;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* 对源字符串加密,返回 BASE64编码后的加密字符串
*
* @param source
* 源字符串,明文
* @return 密文字符串
*/
public static String encode(String source) {
try {
// 根据编码格式获取字节数组
byte[] sourceBytes = source.getBytes(UTF_8);
// 加密模式
Cipher cipher = Cipher.getInstance(AES);
cipher.init(Cipher.ENCRYPT_MODE, key);
// 加密后的字节数组
byte[] encryptSourceBytes = cipher.doFinal(sourceBytes);
// Base64编码器
BASE64Encoder base64Encoder = new BASE64Encoder();
return base64Encoder.encode(encryptSourceBytes);
} catch (Exception e) {
// throw 也算是一种 return 路径
throw new RuntimeException(e);
}
}
/**
* 对本工具类 encode() 方法加密后的字符串进行解码/解密
*
* @param encrypted
* 被加密过的字符串,即密文
* @return 明文字符串
*/
public static String decode(String encrypted) {
// Base64解码器
BASE64Decoder base64Decoder = new BASE64Decoder();
try {
// 先进行base64解码
byte[] cryptedBytes = base64Decoder.decodeBuffer(encrypted);
// 解密模式
Cipher cipher = Cipher.getInstance(AES);
cipher.init(Cipher.DECRYPT_MODE, key);
// 解码后的字节数组
byte[] decryptStrBytes = cipher.doFinal(cryptedBytes);
// 采用给定编码格式将字节数组变成字符串
return new String(decryptStrBytes, UTF_8);
} catch (Exception e) {
// 这种形式确实适合处理工具类
throw new RuntimeException(e);
}
}

以上所述是小编给大家介绍的关于AES加密算法在linux下解密失败的解决办法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • java基于AES对称加密算法实现的加密与解密功能示例

    本文实例讲述了java基于AES对称加密算法实现的加密与解密功能.分享给大家供大家参考,具体如下: package com.soufun.com; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import

  • 原生js的RSA和AES加密解密算法

    本文实例为大家分享了js中RSA和AES加密解密详细代码,供大家参考,具体内容如下 <!doctype html> <html> <head> <meta charset='UTF-8'> </head> <body> <div class='test'></div> <script type="text/javascript"> function encrypt(data, k

  • 关于AES加密算法在linux下解密失败的解决办法

    前段时间项目要部署到linux上时遇到了这个问题,百度一下找到了解决方案,在这分享一下: public class RSAEncrypt { // 密钥 private static Key key; // KEY种子 private static String KEY_STR = "keyString"; // 常量 public static final String UTF_8 = "UTF-8"; public static final String AES

  • Mysql5.7.14 linux版密码忘记完美解决办法

    在/etc/my.conf文件中[mysqld] 下面最后增加一行:skip-grant-tables 记住是[mysqld]下最后,不要增加到[mysqld_safe]下面 保存之后,重启Mysql,在linux命令行直接执行:mysql回车 OK 修改密码: update mysql.user set password=password('root') where user='root' 结果报错: mysql> select host,user,password from user ; E

  • 百度地图API提示230 错误app scode码校验失败的解决办法

    笔者近2天在 Android Studio上玩了一下百度地图,碰到了常见的"230错误 APP Scode校验失败",下面我来介绍一下具体的解决办法. 1.在andriodstudio上部署百度地图的规范.把下载下来的SDK解压,切换至Project视图.复制以下3个文件到libs文件下. 跟我申请AK时候sha1完全不一样.所有地图只显示方格子,没有地图加载.并提示"230错误 APP Scode校验失败".去API控制台修改SHA1与Logcat对应,地图加载成

  • 浅谈MySQL安装starting the server失败的解决办法

    如果电脑是第一次安装MySQL,一般不会出现这样的报错.如下图所示.starting the server失败,通常是因为上次安装的该软件未清除干净. 完全卸载该软件的办法: 第一步,进入-控制面板\程序\程序和功能,卸载下图中的MySQL两个软件. 第二步,删除上次安装目录的MySQL残留文件,更不要忘了删除ProgramData下的MySQL文件夹,如下图所示.注意:这里的文件夹与上次安装目录里的残留文件不同,C:\ProgramData 一般默认是隐藏的. 第三步,Win+R 输入 reg

  • phpStudy访问速度慢和启动失败的解决办法

    下面给大家介绍phpstudy访问速度慢的解决办法. 1.修改mysql数据库链接地址为ip地址127.0.0.1. 2.使用最新版本,这个坑了我好久时间. 下面一段内容是关于phpstudy启动失败的解决办法. php5.3.5.4和apache都是用vc9编译,电脑必须安装vc9运行库才能运行. php5.5.5.6是vc11编译,如用php5.5.5.6必须安装vc11运行库. vc9和vc11运行库下载:http://pan.baidu.com/s/1gd0y1Qb php5.5以上才有

  • HTTP 499 状态码 nginx下 499错误的解决办法

    日志记录中HTTP状态码出现499错误有多种情况,我遇到的一种情况是nginx反代到一个永远打不开的后端,就这样了,日志状态记录是499.发送字节数是0. 老是有用户反映网站系统时好时坏,因为线上的产品很长时间没有修改,所以前端程序的问题基本上可以排除,于是就想着是Get方式调用的接口不稳定,问了相关人员,说没有问题,为了拿到确切证据,于是我问相关人员要了nginx服务器的日志文件(awstats日志),分析后发现日志中很多错误码为499的错误,约占整个日志文件的1%,而它只占全部报错的70%左

  • pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)

    本机中原pyinstaller版本为3.5版本,本打算通过 pip install --upgrade pyinstaller进行升级,竟然报错,后面卸载再重新安装也一样报错,没办法看来通过pip是暂时安装不上了. 下面就讲解源码安装的方式,先从pypi.org中下载对应3.6版本的源码 https://pypi.org/project/PyInstaller/#files 下载完成后如果是win10操作系统的话,一定要以管理员的方式打包命令窗口,否则会提示权限不足的问题,比如我是把源码放到E盘

  • SpringBoot使用RedisTemplate.delete删除指定key失败的解决办法

    目录 问题概述 解决办法 问题概述 关于这个问题呢,还是主要出现在项目开发的管理上面,先描述哈项目环境: 1.Java 使用的 JDK-1.8 2.Spring Boot 使用的 Spring Boot-2.0.3 3.Redis 使用的是 2.0.8 4.Jedis 使用的是 2.9.0 (当然其它就不再描述了) 起先,使用的都是原生的 ReidsTemplate API 进行系统缓存的管理工作.后来,由于涉及到对象相关的操作,此时如果还使用原生API,缓存中的对象是一坨乱码,让人眼花缭乱,这

  • sql server 2008安装失败的解决办法 彻底卸载老版本!

    有很多人在装sql server的时候,稍有不慎就安装失败.sql server 2008应该是用的比较多的,很多人都遇到了安装失败的问题,什么原因造成的呢?小编这里简单的总结了下,并为大家带来解决办法,不妨试试哦! 如图:安装失败都是因为以前的老版本未卸载干净造成的! 怎么解决? 1.停止所有跟Sql相关的服务:控制面板-〉管理工具-〉服务 2.在控制面板中卸载所有和SQL有关的一切程序或者组建 3.注册表清理(): 3.1彻底删除SQL Server: hkey_local_machine\

  • McAfee 1920错误 启动失败的解决办法

    服务器时间不正确导致mcafee启动服务出现错误1920 昨天帮一朋友配置服务器,安装mcafee杀毒软件到最后一步时却提示1920错误,这是使用mcafee以来第一次遇到这种错误,在网上搜索解决方案,似乎无效,意外的发现服务器时间不正确,正确的日期为2007年,而服务器上的日期为2000年,因为使用mcafee8.5i 首次安装的病毒库日期是2006-11,所以启动服务时才会提示错误1920,更改成正确的时间,然后再重新安装一次MCAFEE,就正常启动了 我不知道网上那么多人遇到这种错误是什么

随机推荐