前段時間項目要部署到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下解密失敗的解決相关推荐

  1. linux 信号sigabrt,關於Linux中的SIGABRT信號

    SIGABRT是中止一個程序,它可以被捕捉,但不能被阻塞.處理函數返回后,所有打開的文件描述符將會被關閉,流也會被flush.程序會結束,有可能的話還會core dump. 當程序調用abort(3) ...

  2. java aes加密 linux和windows,AES加密在windows與linux平台下顯示結果不同,解決方案

    現象描述: 在 windows 操作系統下加解密正常,但部署到 linux 環境中相同的輸入加密結果不正確,並且每次運行返回的結果都不同.也就是說在windows下加解密都正常,一但部署到linux下 ...

  3. linux 软件加密狗,Linux  加密狗Sentinel  相关问题 20190505

    Linux 加密狗Sentinel相关问题 20190505 1. Linux 系统安装 v2c 文件的时候报错 48 haspvlib_xxxxxx.so 库文件拷贝到/var/hasplm 路径下 ...

  4. aes linux加密 windows解密,解决Linux操作系统下DES、AES解密失败的问题

    windows上加解密正常,linux上加密正常,解密时发生如下异常: javax.crypto.BadPaddingException: Given final block not properly ...

  5. Linux加密框架crypto AES代码相关

    例子 aes_generic.c - crypto/aes_generic.c - Linux source code (v5.15.11) - Bootlin static struct crypt ...

  6. AES,DES,3DES加密方式的特点

    SUMMARY DES:Data Encryption Standard(数据加密标准,又美国国密局,选中的IBM的方案,密钥长度为56,标准提出是要使用64位长的密钥,注意: 实际中DES算法只用了 ...

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

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

  8. 使用Crypto++的AES GCM对称加密

    这里记录使用Crypto++的AES GCM对称加密的代码片段,可直接执行 运行环境:Windows, Visual Studio 2017 需安装Crypto++库,可使用cvpkg工具直接集成该库 ...

  9. 对称加密----AES和DES加密、解密

    目前主流的加密方式有:(对称加密)AES.DES        (非对称加密)RSA.DSA 调用AES/DES加密算法包最精要的就是下面两句话: Cipher cipher = Cipher.get ...

最新文章

  1. 导师对帮助研究生顺利完成学业提出了20条劝告:第一,不要有度假休息的打算.....
  2. 动态分辨率是什么意思_ISP基础(02):宽动态范围WDR
  3. android 程序退出广播,android 利用广播实现程序的强制退出
  4. 最近找工作的面试经历
  5. Windows Mobile下使用CppUnitLite输出测试结果
  6. 【渝粤教育】国家开放大学2018年秋季 0043-22T计算机文化 参考试题
  7. php 随机生成ip
  8. 关于fsockopen pfsockopen函数被禁用的解决方法
  9. CSS z-index 属性的使用方法和层级树的概念
  10. Atitti 固化数据库表结构方案
  11. openstack安装配置(一)
  12. MS Sql Server查询磁盘的可用空间,数据库数据文件及日志文件的大小及利用率
  13. 关于色域与BT.2020相关学习心得笔记
  14. 12v电量显示制作方法_12V电池电量指示电路
  15. Chromium OS开启Android ADB调试、进入安卓开发者模式
  16. P2114 起床困难综合症
  17. Excel数据导入___你hold住么(一)
  18. ElasticSearch搜索引擎搭建笔记
  19. Sharepoint 列表关联Title字段设置
  20. 基于单片机的自动分拣小车的设计--毕业设计参考

热门文章

  1. win10-cpu-Yolov7
  2. typecho文章内挂载B站视频
  3. App怎么上架到苹果商店(app store)?上架app的流程。
  4. 小家电—充电过压保护电路
  5. 1938年叶企孙给熊大缜的诗
  6. 费解的备份corrupt终于搞明白了
  7. linux网络内核分析与开发 pdf,Linux网络内核分析与开发-肖宇峰.pdf
  8. vue 路由警告 Duplicate named routes definition
  9. 微信红包雨怎么抢_1月26日晚8点微信红包雨发放时间表 怎么抢红包全攻略
  10. 如何在iPhone或iPad上的“查找我”中设置AirTag?