AES在linux加密String,關於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加密String,關於AES加密算法在linux下解密失敗的解決相关推荐
- linux 信号sigabrt,關於Linux中的SIGABRT信號
SIGABRT是中止一個程序,它可以被捕捉,但不能被阻塞.處理函數返回后,所有打開的文件描述符將會被關閉,流也會被flush.程序會結束,有可能的話還會core dump. 當程序調用abort(3) ...
- java aes加密 linux和windows,AES加密在windows與linux平台下顯示結果不同,解決方案
現象描述: 在 windows 操作系統下加解密正常,但部署到 linux 環境中相同的輸入加密結果不正確,並且每次運行返回的結果都不同.也就是說在windows下加解密都正常,一但部署到linux下 ...
- linux 软件加密狗,Linux 加密狗Sentinel 相关问题 20190505
Linux 加密狗Sentinel相关问题 20190505 1. Linux 系统安装 v2c 文件的时候报错 48 haspvlib_xxxxxx.so 库文件拷贝到/var/hasplm 路径下 ...
- aes linux加密 windows解密,解决Linux操作系统下DES、AES解密失败的问题
windows上加解密正常,linux上加密正常,解密时发生如下异常: javax.crypto.BadPaddingException: Given final block not properly ...
- Linux加密框架crypto AES代码相关
例子 aes_generic.c - crypto/aes_generic.c - Linux source code (v5.15.11) - Bootlin static struct crypt ...
- AES,DES,3DES加密方式的特点
SUMMARY DES:Data Encryption Standard(数据加密标准,又美国国密局,选中的IBM的方案,密钥长度为56,标准提出是要使用64位长的密钥,注意: 实际中DES算法只用了 ...
- java aes cfb 256_aes加密解密源码,包括aes128、aes192、aes256位,以及cbc、cfb、ecb、ofb、pcbc模式...
AES加解密总共有以下这些 算法/模式/填充 字节加密后数据长度 不满16字节加密后长度 AES/CBC/NoPadding ...
- 使用Crypto++的AES GCM对称加密
这里记录使用Crypto++的AES GCM对称加密的代码片段,可直接执行 运行环境:Windows, Visual Studio 2017 需安装Crypto++库,可使用cvpkg工具直接集成该库 ...
- 对称加密----AES和DES加密、解密
目前主流的加密方式有:(对称加密)AES.DES (非对称加密)RSA.DSA 调用AES/DES加密算法包最精要的就是下面两句话: Cipher cipher = Cipher.get ...
最新文章
- 导师对帮助研究生顺利完成学业提出了20条劝告:第一,不要有度假休息的打算.....
- 动态分辨率是什么意思_ISP基础(02):宽动态范围WDR
- android 程序退出广播,android 利用广播实现程序的强制退出
- 最近找工作的面试经历
- Windows Mobile下使用CppUnitLite输出测试结果
- 【渝粤教育】国家开放大学2018年秋季 0043-22T计算机文化 参考试题
- php 随机生成ip
- 关于fsockopen pfsockopen函数被禁用的解决方法
- CSS z-index 属性的使用方法和层级树的概念
- Atitti 固化数据库表结构方案
- openstack安装配置(一)
- MS Sql Server查询磁盘的可用空间,数据库数据文件及日志文件的大小及利用率
- 关于色域与BT.2020相关学习心得笔记
- 12v电量显示制作方法_12V电池电量指示电路
- Chromium OS开启Android ADB调试、进入安卓开发者模式
- P2114 起床困难综合症
- Excel数据导入___你hold住么(一)
- ElasticSearch搜索引擎搭建笔记
- Sharepoint 列表关联Title字段设置
- 基于单片机的自动分拣小车的设计--毕业设计参考
热门文章
- win10-cpu-Yolov7
- typecho文章内挂载B站视频
- App怎么上架到苹果商店(app store)?上架app的流程。
- 小家电—充电过压保护电路
- 1938年叶企孙给熊大缜的诗
- 费解的备份corrupt终于搞明白了
- linux网络内核分析与开发 pdf,Linux网络内核分析与开发-肖宇峰.pdf
- vue 路由警告 Duplicate named routes definition
- 微信红包雨怎么抢_1月26日晚8点微信红包雨发放时间表 怎么抢红包全攻略
- 如何在iPhone或iPad上的“查找我”中设置AirTag?