CryptoJS AES 加密和 Java AES 解密

2023-11-25

我之所以问这个问题,是因为我这两天读了很多关于加密 AES 加密的文章,就在我以为我明白了的时候,我意识到我根本没有明白。

这篇文章是与我的问题最接近的一篇,我有完全相同的问题,但尚未得到解答:

CryptoJS AES 加密与 JAVA AES 解密值不匹配

我尝试过很多方法,但都没有做对。

首先

我得到了已经加密的字符串(我只得到了代码来看看他们是如何做到的),所以修改加密方式不是一个选项。这就是为什么所有类似的问题对我来说都没有用。

Second

我确实可以访问密钥并且可以修改它(因此如果需要,可以选择调整长度)。

加密是在 CryptoJS 上完成的,他们将加密的字符串作为 GET 参数发送。

GetParamsForAppUrl.prototype.generateUrlParams = function() {
const self = this;
 return new Promise((resolve, reject) => {
   const currentDateInMilliseconds = new Date().getTime();
   const secret = tokenSecret.secret;
   var encrypted = CryptoJS.AES.encrypt(self.authorization, secret);
   encrypted = encrypted.toString();
   self.urlParams = {
     token: encrypted,
     time: currentDateInMilliseconds
   };
   resolve();
 });
};

我可以使用 CryptoJS 在 javascript 上轻松解密:

var decrypted = CryptoJS.AES.decrypt(encrypted_string, secret);
    console.log(decrypted.toString(CryptoJS.enc.Utf8)); 

但出于安全原因,我不想在 Javascript 上执行此操作,因此我尝试在 Java 上解密:

String secret = "secret";
byte[] cipherText = encrypted_string.getBytes("UTF8");
SecretKey secKey = new SecretKeySpec(secret.getBytes(), "AES");
Cipher aesCipher = Cipher.getInstance("AES");
aesCipher.init(Cipher.DECRYPT_MODE, secKey);
byte[] bytePlainText = aesCipher.doFinal(byteCipherText);
String myDecryptedText = = new String(bytePlainText);

在我对自己在做什么有任何想法之前,我尝试了base64解码,添加了一些IV和我读过的很多东西,当然它们都不起作用。

但是当我开始理解我在做什么之后,我写了上面那个简单的脚本,并在帖子中得到了同样的错误:AES 密钥长度无效

我不知道从这里该去哪里。阅读了很多相关内容后,解决方案似乎是散列或填充,但我无法控制加密方法,所以我无法真正散列秘密或填充它。

但正如我所说,我可以更改密钥,以便它可以匹配某些特定长度,并且我已经尝试更改它,但当我在这里在黑暗中拍摄时,我真的不知道这是否是解决方案。

所以,我的问题基本上是,如果我得到加密的字符串(在 javascript 中,就像第一个脚本一样)和密钥,有没有办法解密它(in Java)?如果可以的话,该怎么办呢?


免责声明:除非您了解加密概念,包括链接模式、密钥派生函数、IV 和块大小,否则请勿使用加密。并且不要推出自己的安全方案,而是坚持既定的方案。仅加入加密算法并不意味着应用程序变得更加安全。

CryptoJS 实现了与 OpenSSL 相同的密钥派生函数以及将 IV 放入加密数据中的相同格式。因此,所有处理 OpenSSL 编码数据的 Java 代码都适用。

给出以下 Javascript 代码:

var text = "The quick brown fox jumps over the lazy dog. 									
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CryptoJS AES 加密和 Java AES 解密 的相关文章

  • JPA 实体中的方法是否允许抛出异常?

    我尝试创建的 Entity 有问题 当尝试使用 OpenJPA 实现在 Eclipse 中测试类时出现问题 我有not尝试过其他人 所以不确定它是否适用于他们 我的测试用例非常简单 因为它创建一个 EntityManagerFactory
  • Windows 上的虚假唤醒。是否可以?

    我最近学习了 虚假唤醒 有人说这个问题只可能发生在某些类型的 Linux PC 上 我用的是窗户 我为虚假唤醒编写了测试 我得到的结果是这是可能的 但我想向您展示这个测试 也许我在某个地方犯了错误 我的初始变体 import java ut
  • 定制法国号码格式

    我尝试为美国国家 地区使用自定义数字格式 到目前为止效果很好 Not something I want NumberFormat numberFormat0 NumberFormat getNumberInstance Locale US
  • 为移动设备扩展 libgdx UI?

    眼下desktop应用程序的版本很好 按钮缩放得很好 但是当我部署到android它们很小 几乎无法使用 DesktopLauncher public class DesktopLauncher public static void mai
  • Hamcrest 泛型地狱 #2:iterable With Size 给出错误“不适用于参数”

    在 hamcrest 中 1 3 RC2 没有 JUnit 依赖项 我使用失败iterableWithSize 我有一个 扩展 Iterator参数化为Content像这样EndResult
  • mvn dependency:analyze 结果不正确

    我一直在寻找一种工具 它能够向您显示未使用的依赖项 我很快就偶然发现了 Maven 命令mvn dependency analyze 这样做的问题是 它经常检测到 未使用的 依赖项 如果缺失 这些依赖项就会导致构建失败 这是优化项目的示例
  • 如何从 .t​​xt 文件读取数据并将数据放入对象的数组列表中?

    到目前为止 我所写的内容是基于我目前对基本数组的了解 但我只是不明白如何使用数组列表 或如何从文件中读取 到目前为止我所写的内容有效 任何有助于修复我的代码以从文件中读取并使用数组列表的链接或建议将不胜感激 谢谢 public class
  • JTable AutoCreateRowSorter 将数字排序为字符串

    我有一个 JTable JTable table new JTable String colNames c1 DefaultTableModel model new DefaultTableModel Integer x new Integ
  • 将 Spring Boot 应用程序部署到 Heroku 失败并显示“无效标志:--release -> [帮助 1]”

    当我尝试将代码部署到 Heroku 时 通过git push heroku master 我收到 Maven 错误 remote ERROR Failed to execute goal org apache maven plugins m
  • C# 中的 Culture 相当于 Java 中的 Locale 吗?

    C 使用文化的概念 这在操作上与 Java 中的 Locale 类似吗 或者底层概念是否存在显着差异 从文化而不是语言环境的角度进行工作是一种寻找正确抽象层次的尝试 从以类似方式做事的人群的角度来考虑事物 而不是谈论地理区域和语言 并有点疯
  • x.person 上的 @OneToOne 或 @ManyToOne 引用未知实体:y.Person - 继承问题

    我的 Hibernate 架构有问题 我有一个 MappedSuperClass 人员 一名员工和一名客户 gt Person class MappedSuperclass Audited public class Person exten
  • 解密Javascript源代码[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我已经编写了一段 JavaScrip
  • java.sql.SQLException: - ORA-01000: 超出最大打开游标数

    我收到 ORA 01000 SQL 异常 所以我有一些与之相关的疑问 最大打开游标是否与 JDBC 连接数完全相关 或者它们也与我们为单个连接创建的语句和结果集对象相关吗 我们正在使用连接池 有没有办法配置数据库中语句 结果集对象的数量 如
  • 按位非运算符

    为什么要按位运算 0 打印 1 在二进制中 不是0应该是1 为什么 你实际上很接近 在二进制中 不是0应该是1 是的 当我们谈论一位时 这是绝对正确的 然而 一个int其值为0的实际上是32位全零 将所有 32 个 0 反转为 32 个 1
  • 用java解密AES加密文件

    我有一个使用 AES 使用 java 应用程序加密的文件 我还有一个加密的密钥文件 但我不明白如何使用密钥来解密文件 大多数教程和示例都会在一个地方创建临时随机密钥 加密文件和解密 所以 问题是如何指定解密时必须使用的密钥 EDIT 我发现
  • 序言中不允许引用

    请帮我找到这个异常的原因 我使用以下罐子 core renderer jar itext paulo 155 jar 第一个文档 xhtml lt xml version 1 0 encoding UTF 8 gt lt DOCTYPE h
  • 如何在 Eclipse 中使用 Hibernate Tools 生成 DAO?

    我在用着 Eclipse Java EE IDE Web 开发人员 版本 Indigo 发布 使用 hibernate 工具 我对 Eclipse 中的 hibernate 很陌生 所以我学习如何配置 hibernate 并使用注释生成 P
  • 使用 Java 进行 AES 加密并使用 Javascript 进行解密

    我正在制作一个需要基于 Java 的 AES 加密和基于 JavaScript 的解密的应用程序 我使用以下代码作为基本形式进行加密 public class AESencrp private static final String ALG
  • 如何使用自定义转换器访问 jOOQ 生成的例程字段作为值?

    我在访问生成例程的字段时遇到问题PL pgSQL 用户定义函数 返回JSON 数据类型结果 已经提到this https stackoverflow com q 62535195 6805866问题 这是我的结果get all orders
  • 文件构造函数说明

    我无法理解以下文件构造函数 public File String parent String child and public File File parent String child 参数有什么作用parent and child该文件

随机推荐

  • 透明背景 JFrame Linux 上的动画

    我想为 Frame 或 JFrame 创建完全透明的背景并让它显示透明动画 我设法让它在 Windows 7 x64 中运行 但相同的代码无法在我的 Linux Lubuntu x64 15 04 上运行 下面的代码显示了我想要实现的目标
  • 我该怎么做:使用@databaseName

    DECLARE DatabaseName NVARCHAR max SET DatabaseName MainDb USE DatabaseName 行不通 怎样制作呢 如果你想像这样动态地执行它 你必须使用动态 SQL 意味着您想要在该数
  • 我们可以给静态数组的大小一个变量吗

    大家好 我想问一下 我已经读到 我们只能通过使用指针并使用 malloc 或 newlike 来声明动态数组 int array new int strlen argv 2 但我已经写了 int array strlen argv 2 它没
  • FFMPEG 命令在 Android Q 中不起作用

    尝试此命令来合并两个音频文件 但它在 Android 10 0 Q 中不起作用针对 SDK 29 但是 这个命令完全有效针对 sdk 24 至 28 我正在使用这个 FFMPEG 实现库 nl bravobit android ffmpeg
  • 将 JSON 显示为 HTML [关闭]

    Closed 这个问题是无关 目前不接受答案 关于如何将 JSON 嵌入到 HTML 页面中 并将 JSON 格式化为人类可读的样式 有什么建议吗 例如 当您在浏览器中查看 XML 时 大多数浏览器都会显示 XML 格式 缩进 正确的换行符
  • jquery如何做一个翻转效果?

    我试图模仿通常在移动设备上发现的效果 在移动设备上有一个面板 当您单击按钮时 它会旋转 而在另一侧它有一些其他信息 我发现了一些使用 css 转换的代码这是一个例子 the js signup on click function e e p
  • Perl6:获取 Perl5 模块的数组引用

    我正在尝试使用 Excel Writer XLSX 在 Perl6 中编写 Excel 笔记本 我正在使用 Inline Perl5 通过use Excel Writer XLSX from
  • Xcode 6 不显示 iOS 7.1 模拟器

    我在 Mac OS X 10 9 5 上拥有 Xcode 版本 6 0 1 6A317 以及所有 iOS 8 模拟器 我还下载了 iOS 7 1 模拟器 我正在开发一个适用于 iOS 8 和 iOS 7 的应用程序 我遇到的问题是 Xcod
  • Python copy.deepcopy() 函数无法正常工作[重复]

    这个问题在这里已经有答案了 我一直在使用深度复制功能和复制功能 并且我对它们都遇到了同样的问题 这就像副本是引用 或指针 而不是正确的副本 我正在Python中处理数据记录 类 也许可能是这样 我给你看一个例子 gt gt gt impor
  • 如何使用 ggplot2 从 qcc 包重现 pareto.chart 图?

    我一直在使用 R 中 qcc 包中的 pareto chart 函数 我真的很喜欢它 现在我想移植所有图形以使用 ggplot2 包 然而 尽管有出色的文档 但我对 ggplot2 的了解非常有限 因此我无法弄清楚所有细节 基本上我想要一个
  • 如何生成 a[i] != i 的排列?

    假设我有一个整数数组int a 0 1 N 1 where N的大小是a 现在我需要生成所有排列a s that a i i对全部0 lt i lt N 你会怎么做 下面是一些 C 实现的算法 该算法基于递归的双射证明 n n 1 n 1
  • Android 通用用户代理 (UA)

    我正在构建一个 Android 应用程序来显示来自服务器的内容源 服务器是一个移动网站 例如http m google com 它跟踪来自各种移动客户端的流量 为了区分 Android 客户端 如何为我的应用程序提供通用字符串 这就是我问这
  • 是否可以在索引视图中使用 LabelFor 作为标题行

    我正在尝试在 ASP NET MVC 索引视图中利用 DataAnnotation 值 有趣的是 代码生成器使用字段名称 例如 BlogPost 而不是Html LabelFor m gt Model ColumNames BlogPost
  • java中整数线程递增是安全的吗?

    Java代码 public class IncreaseTest public static int value 0 public synchronized int increment return value 是方法increment 线
  • 如何从 Java 代码中编写乐观锁和悲观锁

    我知道什么是乐观锁和悲观锁 但是当你编写java代码时你会怎么做呢 假设我将 Oracle 与 Java 结合使用 JDBC 中是否有任何方法可以帮助我做到这一点 我将如何配置这个东西 任何指示将不胜感激 您可以通过这种方式在数据库表中实现
  • 如果文件名为 _ViewStart.cshtml,Razor 布局将不起作用

    我有一个 MVC3 Web 应用程序 我想开始使用整个 Razor 视图 该网站的大部分内容都可以与 Site Master 配合使用 因此我已将其大部分内容打包到部分视图中 并尝试添加具有相同内容的布局 阅读 Scott Gu 的博客后
  • 如何在运行时轻松地在 PyQt 或 PySide 之间进行选择?

    我想在一个源文件 QT py 中执行类似的操作 import sys import PyQt4 sys modules Qt PyQt4 然后将此文件导入到其他源文件中 并像这样使用它 import QT from Qt QtCore im
  • 没有外部“C”的动态加载

    我想一般使用 libdl 动态加载 C 问题是在运行时识别名称已被破坏的符号 如此处所述 一种解决方案是使用 extern C 删除名称修饰 http www tldp org HOWTO C dlopen theproblem html
  • 编辑模式下的自定义 UITableViewCell 不会移动我的 UILabels

    这让我很头疼 我有一个功能齐全的 CoreData PopulatedUITableView里面一个UIViewController我已经成功实现了 滑动删除选项 这很容易 我还可以使用出现红色圆圈的编辑按钮删除单个实例 我的问题是 我认为
  • CryptoJS AES 加密和 Java AES 解密

    我之所以问这个问题 是因为我这两天读了很多关于加密 AES 加密的文章 就在我以为我明白了的时候 我意识到我根本没有明白 这篇文章是与我的问题最接近的一篇 我有完全相同的问题 但尚未得到解答 CryptoJS AES 加密与 JAVA AE
Powered by Hwhale