当前位置: 首页 > 知识库问答 >
问题:

不兼容的 AES 实现?

卢雅惠
2023-03-14

我已经从这个站点编译了一些AES实现代码,它应该执行128位密钥加密。我测试了可以正常工作的加密/解密程序。

然而,如果我用上面提到的代码加密任何东西,然后尝试用linux内置的openssl工具解密,我就是无法解密它,它甚至会记录错误的幻数错误。同样,如果我用openssl加密任何东西,并尝试用代码解密,那么就不会起作用。我试过两个cbc欧洲央行。

如果他们都在实施AES,它不应该以同样的方式工作吗?

共有1个答案

司徒耀
2023-03-14

看起来C代码使用了ECB并且没有填充。因此,尝试加密一条16字节的消息(倍数),后跟16字节的值16 (pkcs#7填充)。或者在openssl中使用16字节的消息(倍数)和- nopad(更有可能行得通)。此外,使用aes-128-ecb或其他名称。

分组密码对文本“块”起作用——在这种情况下,它有16个字符长。因此,如果你不想担心填充,你需要给出一个准确的块的数量。

此外,ECB 模式(依次执行每个块,无需额外处理)对于许多用途都不安全。请参阅维基百科文章(查看企鹅照片)。

[编辑:][编辑2:]

> echo -n "abcdabcdabcdabcd" > msg
> wc msg
 0  1 16 msg
> openssl enc -aes-128-ecb -nopad -in msg -K 0 -S "" -iv ""
[noise]
> openssl enc -aes-128-ecb -nopad -in msg -K 0 -S "" -iv "" | wc
 0 1 16

请自己尝试上面的操作,看看其他代码是否对其进行了解密(edit2显式设置密钥,并删除IV和salt-不确定在本例中后两者的用途)。

[编辑3:]

据我所知,问题与密码转换为密钥的方式有关。openssl似乎做了一些额外的事情,除非我将键指定为十六进制(-K0),否则我无法摆脱。如果我这样做,另一个程序就不工作了(需要密码)。

抱歉,我没主意了。

 类似资料:
  • 我有一个Python应用程序和PHP网站,通过一些特定的网络层发送消息进行通信。我的任务是使用该通道发送所有AES加密和Base64编码的消息。加密密钥是为双方手动预共享的。 在PHP中,我使用以下代码创建名为的最终消息文本: 我在我的Python应用程序中收到这样的消息,去掉了魔力,得到了base64字节的数据。我找不到一个示例来使兼容的AES密码来解码此消息的问题。 Key和“Magic”只是

  • 问题内容: 我正在尝试建立一个实现和的类。这两个接口都定义了方法,但是返回类型不同: K的类型擦除导致这两个方法签名冲突。我不能拥有它们中的一个,因为它是一个无效的覆盖,并且我不能拥有两个,因为它们具有相同的签名。有什么方法可以使这两个接口共存? 问题答案: 我认为在这种特殊情况下是不可能的。如果两个类都返回了对象类型,那么您将有机会,但是由于您混合了基本类型和对象类型,因此没有兼容的类型同时支持

  • 我需要使用AES算法加密Java应用程序中的一些值,并在我的应用程序的Javascript模块中解密相同的值。 我在互联网上看到了一些例子,但在兼容性方面似乎有些不同。 多谢了。

  • 问题内容: 我正在编写Java小程序并将其嵌入到网页中。它曾经可以在不同的浏览器中运行Mac和Windows,而不会出现问题。我在Mac上使用NetBeans来构建小程序使用的.jar文件。 由于某种原因,我决定将项目加载到Windows的NetBeans上-从任何浏览器访问网页时,我开始在Windows计算机上收到以下错误: 担心一定是由我决定在Windows上打开项目导致此错误的决定-我试图从

  • 问题内容: 我在本地运行WAMP,但连接到远程MySQL数据库。PHP的本地版本是最新的5.3.0。 5.0.45版是远程数据库之一,可以正常工作。但是,我尝试连接的另一个远程数据库(版本5.0.22)在死亡之前引发以下错误: 警告:mysql_connect()[function.mysql-connect]:OK包比预期的要短6个字节。PID = 5880 in … 警告:mysql_conn

  • 以下一些不兼容的语法功能列表,不完全。 不支持类的定义 函数外作用域不是全局作用域 include/require/eval 执行的代码是引入代码作用域 对变量引用缺乏支持 extract() 函数使用无效 不支持可变变量 不允许使用 $string [n] 的方式获取字符串中的某个字符 双引号字符串中引入变量,但不可引入数组项 不存在的常量不会自动转换为字符串 函数定义中不支持类型约束 标识符不