現象描述:

在 windows 操作系統下加解密正常,但部署到 linux 環境中相同的輸入加密結果不正確,並且每次運行返回的結果都不同。也就是說在windows下加解密都正常,一但部署到linux下,就會提示解密失敗,原因是每次加密后的結果都不同,當然MAC機上也是。

原理:

加密過程需手動指定隨機數的生成規則,同理在解密過程中也需手動指定隨機數的生成規則。

java.security.SecureRandom

此類提供加密的強隨機數生成器 (RNG)。許多實現都是偽隨機數生成器 (PRNG) 形式,這意味着它們將使用確定的算法根據實際的隨機種子生成偽隨機序列。其他實現可以生成實際的隨機數,而另一些實現則可能結合使用這兩項技術。

加密的強隨機數至少要遵從《FIPS 140-2, Security Requirements forCryptographic Modules 》中 4.9.1部分指定的統計隨機數生成器測試。另外,SecureRandom 還必須產生非確定性輸出,因此,正如以下文章中所描述的那樣,要求種子材料必須是不可預知的,SecureRandom 的輸出必須是加密的強序列:《RFC 1750:Randomness Recommendationsfor Security 》。

與 Java Security 中其他基於算法的類一樣,SecureRandom 也提供了與實現無關的算法,因此,調用方(應用程序代碼)會請求特定的 RNG 算法並將它傳回到該算法的 SecureRandom 對象中。如果需要,還可以通過特定的提供程序請求特定的算法。請參見 getInstance 方法。

因此,有以下兩種請求 SecureRandom 對象的方法:僅指定算法名稱,或者既指定算法名稱又指定包提供程序。

如果僅指定算法名稱,如下所示:

SecureRandomrandom = SecureRandom.getInstance("SHA1PRNG");

系統將確定環境中是否有所請求的算法實現,是否有多個,是否有首選實現。

如果既指定了算法名稱又指定了包提供程序,如下所示:

SecureRandomrandom = SecureRandom.getInstance("SHA1PRNG", "SUN");

系統將確定在所請求的包中是否有算法實現;如果沒有,則拋出異常。

現象描述

KeyGenerator kg = KeyGenerator.getInstance("AES");

kg.init(128, new SecureRandom(key.getBytes()));

修改后代碼

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

  1. 小米kali linux蓝牙,小米筆記本在Kali Linux下所遇問題部分解決方案(持續更新中)...

    0.本人不才,在小米筆記本安裝Kali Linux所遇到的問題用了兩天摸索才得以解決_(:3 」∠)_ ,kali被我裝了5次,win10的引導被我誤刪了兩次(*/ω\*). 在摸索的過程中發現關於小 ...

  2. java menuitem 乱码_MenuItem 顯示中文亂碼問題解決方案

    今天在使用Java做系統托盤圖標(TrayIcon),需要為其增加一個右鍵彈出菜單(PopupMenu),在使用菜單項(MenuItem)時,遇到了一個非常痛苦的事情:中文亂碼----.這個問題不經常 ...

  3. 在mtk移植个linux内核,移植 Linux Kernel 造成無法開機之解決方案以及除錯工具

    一般在以下情況, 我們會進行移植 Linux Kernel 的動作. 1. 將新版 Linux Kernel 移植到全新 SoC 上 開發人員為 SoC 廠商(e.g. MTK, TI, Allwin ...

  4. Flink DDL的java代碼中的DeserializationSchemaFactory與TableSourceFactory報錯解決方案記錄彙總

    下面的刪除線表示不在pom.xml中出現 否則就在pom.xml中出現. 情況 pom.xml kafka版本設置 對應的報錯 ① flink-connector-kafka_2.12 flink-c ...

  5. intellij中出現java.lang.NoClassDefFoundError: org/apache/commons/configuration/Configuration解決方案

    完整报错如下: Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties 19/03/06 19: ...

  6. linux 解压rar密码,linux下rar包的压缩与解压方案

    方法一: yum install unrar 方法二: 下载地址: 以最新的为准.对于Window下的常见压缩文件.zip和.rar,Linux也有相应的方法来解压它们: 1:对于.zip linux ...

  7. 借助向 Dev Channel 內部人員提供的最新預覽版本,Microsoft 已將舊版本地管理員密碼解決方案(也稱為 LAPS)直接集成到 Windows 11 中

    然而,值得知道的是,LAPS 僅適用於加入 Active Directory 域的客戶端,因為 Microsoft 正在為 Azure Active Directory 用戶在雲端使用分階段推出的方法 ...

  8. java 新浪 发送邮件_使用javamail新浪郵箱發送遇到的問題(已解決)

    打印的日志為:250 ok queue id 361458395651 同一段代碼163郵箱發送成功了,新浪貌似是發送成功了,其實還是發送失敗的郵件,原代碼如下 Properties props = ...

  9. ARMv8 與 Linux的新手筆記

    ARMv8 與 Linux的新手筆記 by loda hlchou@gmail.com 從iPhone 5S採用ARMv8處理器架構後,對於ARMv8 64bits的相關討論很多,也受到大家關注,Go ...

最新文章

  1. 表单form类型数据转换为数组array
  2. Spring Boot Dubbo 应用启停源码分析
  3. OpenCV扫描图像,查找表和时间测量
  4. 搜索引擎的十大秘密(收藏)
  5. php如何输出复选框的值,php 怎么输出复选框呢?
  6. mcq 队列_人工智能逻辑才能问答(MCQ)
  7. MySQL 8密码策略
  8. 构建Web内容的技术
  9. ** 安装好的Apache服务器不能在本地计算机启动
  10. 华为荣耀手机指令代码大全_2020.10月《各价位华为、荣耀手机推荐》
  11. 【Struts】ActionForm
  12. Java 语言被很多人抱怨语法繁琐、开发效率低、体系繁杂而笨重,为什么还有这么强的生命力,尤其是在企_-Chaz-_新浪博客
  13. C++[Error] expected primary-expression before ‘]‘ token
  14. 计算机二级选择题需要刷吗,“我明天就要考计算机二级了”
  15. 小程序调试技术详解(基于小猴小程序)
  16. 『每日AI』马化腾丨中国互联网已从C2C进化为KFC!
  17. 基于MATLAB的全局多项式插值法(趋势面法)与逆距离加权(IDW)法插值与结果分析
  18. LeetCode-动态规划-518-零钱兑换II
  19. 机构数据分析培训之关于Mysql定义及数据库相关小知识
  20. 考PMP证书需要经过哪些流程?

热门文章

  1. 基础体温软件测试初学者,基础体温测试表
  2. 列[NEW_PWD]长度超出定义
  3. Access 中用于计算和显示日期/时间值的函数
  4. http协议和websocket协议
  5. qemu 编译 qemu-system-arm 和 qemu-system-aarch64
  6. Ubuntu下屏幕取色软件——gpick
  7. Confluent Platform: 正式环境安装
  8. Linux Netfilter mangle表注册
  9. Liquibase实践指南
  10. PHP_JavaScript核心编程(1)