gpt4 book ai didi

java - Android:使用 128 位 key 大小和 128 位 block 大小解密 AES - block 密码模式:CBC-CS1

转载 作者:太空宇宙 更新时间:2023-11-04 13:08:15 25 4
gpt4 key购买 nike

我需要解密一些使用以下规范加密的数据(在 Android 上):

  • 具有 128 位 key 大小和 128 位 block 大小的 AES
  • 分组密码模式:CBC-CS1(带有密文窃取的 CBC,变体 1,如 [CBCCS] 中指定)

在网上没有找到太多信息,到目前为止我尝试过的所有 AES 解密方法都不起作用。

主要问题似乎是 CBC-CS1 的实现,它是否受支持还是我应该自己实现?

谢谢,民主党

最佳答案

如果您愿意,您似乎应该能够使用new NISTCTSBlockCipher(NISTCTSBlockCipher.CS1, aes)。一件事可能会有所作为:您应该直接向其提供 AES 分组密码,例如:

AESFastEngine aes = new AESFastEngine();
NISTCTSBlockCipher aescbccts = new NISTCTSBlockCipher(NISTCTSBlockCipher.CS1, aes);

这与 CTSBlockCipher 不同,CTSBlockCipher 似乎期望 CBCBlockCipher (无论如何用于 CBC + CTS 操作)。

如果你确实给它喂食 CBC,那么你 - 足够有趣 - 最终会再次得到双倍 CBC = ECB:

CTB_n = E(CTB_n-1 XOR CTB_n-1 XOR PTB_n) = E(PTB_n).
<小时/>

来自维基百科:

The numbering here is taken from Dworkin, who describes them all. The third is the most popular, and described by Daemen and Schneier; Meyer describes a related, but incompatible scheme (with respect to bit ordering and key use).

我刚刚验证了 Bouncy 实现了 CS3。因此,您似乎应该能够使用 CTSBlockCipher (正如 ArtjomB 建议的那样),但只有在交换(部分)最后一个和第一个到最后一个 block 之后。

或者,您也可以简单地重写CTSBlockCipher,Bouncy CaSTLe 拥有非常宽松的许可证。

关于java - Android:使用 128 位 key 大小和 128 位 block 大小解密 AES - block 密码模式:CBC-CS1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34220953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com