Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在不超过原始数据大小的情况下加密数据?_C#_Encryption - Fatal编程技术网

C# 如何在不超过原始数据大小的情况下加密数据?

C# 如何在不超过原始数据大小的情况下加密数据?,c#,encryption,C#,Encryption,我的问题很简单,我想知道加密算法 我需要加密原始数据(文本等),加密的数据大小应该与原始数据大小相同吗? 请分享你的想法好吗 例如: 原始数据是“test”(因此文本长度为4)。预期的加密数据应该是这样的“etst”(因此长度为4)。这并不总是可能的,尤其是在数据量较短的情况下。我很确定所有的标准算法都是在“块”上工作的,块通常是密钥的长度。因此,除非你使用一个真正弱的密钥,或者使用一些弱的密码,比如替换密码或凯撒密码,否则你加密的数据可能会比原始数据长一点 实际上,根据您的经验,您可以使用流密

我的问题很简单,我想知道加密算法

我需要加密原始数据(文本等),加密的数据大小应该与原始数据大小相同吗? 请分享你的想法好吗

例如:
原始数据是“test”(因此文本长度为4)。预期的加密数据应该是这样的“etst”(因此长度为4)。

这并不总是可能的,尤其是在数据量较短的情况下。我很确定所有的标准算法都是在“块”上工作的,块通常是密钥的长度。因此,除非你使用一个真正弱的密钥,或者使用一些弱的密码,比如替换密码或凯撒密码,否则你加密的数据可能会比原始数据长一点


实际上,根据您的经验,您可以使用流密码获得与输入大小相同的加密文本。给出的示例是RC4。

这并不总是可能的,尤其是在数据量较短的情况下。我很确定所有的标准算法都是在“块”上工作的,块通常是密钥的长度。因此,除非你使用一个真正弱的密钥,或者使用一些弱的密码,比如替换密码或凯撒密码,否则你加密的数据可能会比原始数据长一点


实际上,根据您的经验,您可以使用流密码获得与输入大小相同的加密文本。给出的示例是RC4。

除非您使用的是普通替换密码(用不同的字母或符号替换字母),否则您会看到文件的大小增加。如果你使用替换密码,这些密码极易被破解。为什么需要保持文件的大小相同?

除非您使用普通替换密码(用不同的字母或符号替换字母),否则您会看到文件的大小增加。如果你使用替换密码,这些密码极易被破解。为什么需要保持文件的大小相同?

大多数加密算法都是针对数据块的。例如,AES在128位或16字节的块上工作。如果一个块溢出1字节,AES必须需要另一个数据块

使用AES时,结果总是16字节的倍数


如果生成的数据要大得多,则应确保输入的是字节流。如果出于某种原因,在文件中以文本形式复制,.Net会将其转换为Unicode,从而将数据从每字符8位更改为每字符16位,从而使输出的大小加倍。

大多数加密算法在数据块上工作。例如,AES在128位或16字节的块上工作。如果一个块溢出1字节,AES必须需要另一个数据块

使用AES时,结果总是16字节的倍数


如果生成的数据要大得多,则应确保输入的是字节流。如果出于某种原因,您在文件中以文本形式复制,.Net会将其转换为Unicode,这会将您的数据从每字符8位更改为每字符16位,从而使输出的大小增加一倍。

结果将不严重结果将不严重我从您的回答中了解到,对于安全加密,如果“块”的长度为N,长度为L的明文的密文长度将是N,如果我从你的答案中了解到,对于安全加密,如果“块”的长度为N,长度为L的明文的密文长度将是N,如果我在输出后尝试加密10 MB的文件,可能是20或30 MB,这就是为什么!您是在编写自己的算法还是在使用现有的工具?我们使用PGP定期加密发送文件,但没有发现它在大小方面令人望而生畏。如果还没有,我建议您尝试使用现有的工具/SDK。只是我尝试在其输出可能为20或30 MB后加密10 MB的文件,这就是为什么!您是在编写自己的算法还是在使用现有的工具?我们使用PGP定期加密发送文件,但没有发现它在大小方面令人望而生畏。我建议您尝试现有的工具/SDK,如果您还没有。