gpt4 book ai didi

c# - 使用 Triple DES 时的加密数据大小

转载 作者:行者123 更新时间:2023-11-30 13:43:09 25 4
gpt4 key购买 nike

我打算在我的一个项目中使用 TripleDES。我正在做一些实验以适应它。我知道三重 DES 的 block 大小是 8 个字节,所以我假设如果提供 8 个字节的数据,我应该得到 8 个字节的加密数据。但我得到的是:

Input Size   | Encrypted Size.            | ..            | .6 bytes      | 8 bytes7 bytes      | 8 bytes8 bytes      | 16 bytes9 bytes      | 16 bytes.            | ..            | .

这正常吗?这是它应该工作的方式吗?以下是我尝试使用三重 DES 的方式:



类 TripleDESEncryption
{
私有(private)只读 TripleDESCryptoServiceProvider 引擎;

公共(public) TripleDESEncryption () : 这 (256) { }

公共(public) TripleDESEncryption(int keySizeInBits){
engine = new TripleDESCryptoServiceProvider { KeySize = keySizeInBits };
engine.GenerateKey();
}

public byte[] 加密(byte[] plain){
return engine.CreateEncryptor ().TransformFinalBlock (plain, 0, plain.Length);
}

公共(public)字节[]解密(字节[]加密){
return engine.CreateDecryptor ().TransformFinalBlock (encrypted, 0, encrypted.Length);
}
}

类(class)计划
{
静态只读 int MAX_TEXT_LENGTH = 128;

静态无效主要(字符串[]参数){
Console.WriteLine("{0,10}{1,10}{2,10}{3,10}", "Algo", "Key Size", "Input Size", "Encrypted Size");

var tripleDES = new TripleDESEncryption ();
var input = new List ();

对于 (int i = 0; i <= MAX_TEXT_LENGTH; i++) {
var plain = input.ToArray ();
var encrypted = tripleDES.Encrypt(普通);
Console.WriteLine("{0,10}{1,10}{2,10}{3,10}", "三重 DES", keySize, input.Count, encrypted.Length);
输入.Add (0x65);
}

Console.ReadLine();
}
}

最佳答案

TripleDESCryptoServiceProvider 默认使用 PKCS7-padding .这会将任何消息填充到 block 大小的下一个倍数。

要避免使用填充,只需将 Padding 属性设置为 PaddingMode.None

new TripleDESCryptoServiceProvider { 
KeySize = keySizeInBits,
Padding = PaddingMode.None
};

关于c# - 使用 Triple DES 时的加密数据大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/767408/

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