gpt4 book ai didi

c# - C#.Net 中的 3DES key 大小很重要

转载 作者:IT王子 更新时间:2023-10-29 04:42:52 28 4
gpt4 key购买 nike

以下代码在 c#.NET 中运行良好

byte[] key = Encoding.ASCII.GetByte("012345678901234567890123"); //24characters        
byte[] plainText = Encoding.ASCII.GetBytes("lasaa");
TripleDES des = TripleDES.Create();
des.Key = key;
des.Mode = CipherMode.CBC;
ICryptoTransform ic = des.CreateEncryptor();
byte[] enc = ic.TransformFinalBlock(plainText, 0, plainText.Length);
MessageBox.Show(UTF8Encoding.UTF8.GetString(enc));

我的问题是...

  1. 如何指定 KeySize?如果我使用 des.KeySize= 128192256 它给出

Specified key is not a valid size for this algorithm

  1. 如果我通过添加更多(例如:40 个字符)来更改键中的字符长度。它给出了错误

Specified key is not a valid size for this algorithm

我想知道为什么会这样?

最佳答案

3DES key 的长度为 128 或 192 位。请注意,在内部,该算法将仅使用这 128(分别为 192)位中的 112(分别为 168)位;但是, key 本身在编码为字节、存储和交换时必须具有 16 或 24 字节的长度。尝试设置一个不具有这两个长度之一的 key 会触发错误,当您尝试使用 40 字节的 key 时会观察到该错误。

您不应该尝试设置“ key 大小”:您在设置 key 时已经决定了这一点。当您设置 TripleDES.Key属性(property),TripleDES class 看到你给它一个 24 字节的 key ,因此将自己设置为 KeySize属性为 192。

(3DES 加密的输出是二进制的,不是字符串的 UTF-8 编码。很可能你的最终 UTF8Encoding.UTF8.GetString(enc) 会抗议。)

关于c# - C#.Net 中的 3DES key 大小很重要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5632211/

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