gpt4 book ai didi

c# - 3DES 解密在每次迭代时给出不同的结果

转载 作者:行者123 更新时间:2023-12-05 02:27:12 24 4
gpt4 key购买 nike

尝试使用 3DES 加密和解密,我使用了这个相当简单和标准的代码。但是,每次运行此函数时,我都会得到不同的 decryptionData 值作为输出。

谁能指出我哪里出了问题?

    private void TripleDESDecryption()
{
TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();

des.Key = new byte[] { 0x26, 0x01, 0x54, 0xd0, 0xdc, 0x92, 0xf3, 0x4b, 0xbf, 0x9b, 0xfa, 0x9d, 0x43, 0x24, 0x4b, 0xa4, 0x35, 0x50, 0xde, 0x00, 0x5e, 0x75, 0xc7, 0xed };
des.KeySize = 192;
des.Mode = CipherMode.ECB;
des.Padding = PaddingMode.None;

ICryptoTransform ic = des.CreateDecryptor();

var encryptedData = new byte[] { 0x35, 0x66, 0x45, 0xC4, 0xBD, 0xE9, 0x5F, 0x30 };

byte[] decryptedData = ic.TransformFinalBlock(encryptedData, 0, 8);

Console.WriteLine(BitConverter.ToString(decryptedData));
}

PS:这些只是随 secret 钥和数据,没有敏感内容。

最佳答案

对于TripleDESCryptoServiceProvider.KeySize property适用:

Changing the KeySize value resets the key and generates a new random key. This happens whenever the KeySize property setter is invoked (including when it's assigned the same value).

因此,在贴出的代码中,原来设置的key被随机生成的key覆盖,这就是每次生成不同结果的原因。修复:删除显式 KeySize 调用。这不是必需的,因为 key 大小是用 key 隐式设置的。


请注意,Triple DES 已过时且 ECB 不安全。

关于c# - 3DES 解密在每次迭代时给出不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73360170/

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