gpt4 book ai didi

encryption - 没有原始大小,SlowAES 无法正确解密

转载 作者:行者123 更新时间:2023-11-29 17:32:32 25 4
gpt4 key购买 nike

第一次发贴在这里。这里很棒的社区。经过无数小时的搜索,我无法找出我面临的这个问题的答案。

首先,在加密/解密、密码学等方面,我不是大师。我只想在这个领域走得那么远,而不会迷路。我编写代码的主要框架是 .NET,我被要求为 C# 创建一个 AES CBC 实现,它可以在 JavaScript 和 ActionScript 3 上运行。我在这两个方面都取得了成功,但是在 JavaScript 方面,我遇到了一个问题。

我决定使用 SlowAES AES 实现,因为它似乎是最受欢迎且互操作性最好的。

请查看以下有关我的问题的链接...

第 9 期:http://code.google.com/p/slowaes/issues/detail?id=9

基本上,我对 SlowAES 的问题是,在不知道原始未加密文本长度的情况下,我无法正确解密某些内容。这违背了目的吧?我应该能够在不需要知道原始字符串的情况下解密加密的字符串。

如果我遗漏了什么,请指出正确的方向,我将不胜感激。值得庆幸的是,我没问题,因为我放在一起的 .NET AES 实现可以解密 SlowAES 加密的内容,与 ActionScript 3 的实现相同。

此时我只想让 SlowAES 正确解密。

已更新

在 Remus 的帮助下,我确定 SlowAES 使用的是 PKCS5/7 填充方案,但没有正确删除它。现在我的问题似乎出在 C#、理解字节数组等方面。

我可以看到解密文本中的最后一个字符是“5”,前面有一个“0”。这种模式持续 5 次。现在根据 Remus 在下面所说的,我应该用这个数字减去解密的字符串长度。但是模式是“05”,这是否意味着我将 5 加倍得到 10,然后从我的解密字符串长度中减去 10?

此外,获得我需要减去的数字的最简单方法是什么?我正在使用以下方法获取当前的号码:

Byte[] decryptedBytes = System.Text.Encoding.ASCII.GetBytes(decrypted);<br/>
Byte padLengthByte = decryptedBytes[decryptedBytes.Length - 1];<br/>
Char padLengthChar = Convert.ToChar(padLengthByte);<br/>
String padLengthString = padLengthChar.ToString();<br/>
Int32 padLength = Int32.Parse(padLengthString);

我确定我做错了。再次感谢任何帮助。

我的另一个问题是,您如何知道是否首先应用了填充以将其删除?如果 '\07' 表示 7 个字节的填充,如果最后一个字节是 '\01\' 怎么办?

最佳答案

那是因为显然 SlowAES 没有实现常用的填充方案,如 PKCS:Issue 4: Implement PKCS7 padding .即使库没有实现它,实现它也很简单:一旦获得解密(填充)文本,只需分析最后一个 block 并从填充信息中减去原始长度。 PKCS7 填充在 RFC2315 中描述。如果我没记错的话。

已更新

如果用 PKCS7 填充文本,解密文本中的最后一个字节将包含填充的长度。所以你解密然后从解密文本的末尾删除与最后一个字节的值一样多的字符。例如。

  1. 原文是'This is the original text'。它的长度为 25。
  2. 加密会将长度填充到 32(下一个 16 大小的 block ),因此它将加密 block 'This is the original text\07\07\07\07\07\07\07'。
  3. 填充 block 被加密成 32 位长度的密文
  4. 你解密 32 位长度的密文,并从 2) 中取回填充的文本
  5. 解密 block 的最后一个字节是“\07”,因此您从解密 block 中减去 7 个字节。结果为原文,长度为25:'This is the original text'

PS:我会添加 JavaScript 代码,但我的 JavaScript 编码技能相当生疏。

关于encryption - 没有原始大小,SlowAES 无法正确解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2300146/

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