首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用现有的WB-AES加密码生成白盒AES解密算法和密码?

如何用现有的WB-AES加密码生成白盒AES解密算法和密码?
EN

Cryptography用户
提问于 2019-06-19 10:06:49
回答 1查看 822关注 0票数 0

我可以在Github上找到一些白盒AES 128的实现,如wbaes-1wbaes-2wbaes-3等,它们都是基于WB AES加密技术开发的。理想情况下,大多数实现包括两部分:

(1)。Table_Generator.c (或.cpp,.h .)输入:16字节键;输出:一个大的查找表(例如table.h),其中键信息已经隐藏在这个查找表中

(2)。AES_Encrypt.c。输入:纯文本&从(1)生成的表;输出:密码文本

但我也需要解密实现。

首先,让我确认一个基本问题:

  • 加密表和解密表分别生成,使用一个相同的密钥(例如,AES128的16字节密钥)?对,是这样?这意味着有两种表生成算法(因此有两个单独的查找表)--一个加密,一个用于解密。

然后,主要问题是:

  • 将WB加密项目修改为WB解密项目的重要步骤是什么?
  • 是否有任何WB AES解密实现供我阅读?
EN

回答 1

Cryptography用户

发布于 2019-06-19 16:47:24

加密和解密主要区别于以下两个步骤:

  1. 子字节步骤的S-Box是倒置的,所以如果0x00在加密中映射到0x63,那么在解密中0x63被映射到0x00 (参见https://en.wikipedia.org/wiki/Rijndael_S盒)。
  2. 混合柱-步进。在这里,要混合列的值是不同的(再次倒置,请参见https://en.wikipedia.org/wiki/Rijndael_MixColumns)。

为了解决这个问题,您可以简单地在反模式下使用AES。这样,加密和解密就变成了完全相同的操作,您可以简单地使用为两者找到的加密实现。

不加密消息本身,而是加密随机值,然后使用相应的明文块对XORed进行加密。在此之后,计数器被递增(例如,由1)并再次加密。结果是带有下一个消息块的XORed,依此类推。这样,对于加密来说,只需重复相同的步骤(加密计数器,用密文对结果进行XOR,增加计数器和重复)。

下面链接到它的工作原理图:https://en.wikipedia.org/wiki/Block_密码学_模式_的_operation#CTR

如果可能的话,使用现有的库。密码运行很容易,但很难确保安全。

票数 -1
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/71431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档