Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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# 输出长度与输入长度相同的BouncyCastle对称密码算法_C#_Security_Encryption_Bouncycastle - Fatal编程技术网

C# 输出长度与输入长度相同的BouncyCastle对称密码算法

C# 输出长度与输入长度相同的BouncyCastle对称密码算法,c#,security,encryption,bouncycastle,C#,Security,Encryption,Bouncycastle,我正在尝试使用CSharp API创建一个BouncyCastle密码算法,该算法满足以下条件: 输出长度与输入长度相同 输入的微小变化(几个字节)会导致输出的巨大变化 处理非常小的输入(10到16字节之间) 任何帮助都将不胜感激 编辑:我尝试过AES/CTR/NoPadding,但虽然它符合第一和第三个标准,但不符合第二个标准-输入的微小变化会导致输出的微小变化。Uuhm,在我看来,您似乎在尝试散列某些数据,而实际的散列算法(SHA)更适合这些数据。为什么输出必须与输入长度相同?我不是在散

我正在尝试使用CSharp API创建一个BouncyCastle密码算法,该算法满足以下条件:

  • 输出长度与输入长度相同
  • 输入的微小变化(几个字节)会导致输出的巨大变化
  • 处理非常小的输入(10到16字节之间)
任何帮助都将不胜感激


编辑:我尝试过AES/CTR/NoPadding,但虽然它符合第一和第三个标准,但不符合第二个标准-输入的微小变化会导致输出的微小变化。

Uuhm,在我看来,您似乎在尝试散列某些数据,而实际的散列算法(SHA)更适合这些数据。为什么输出必须与输入长度相同?我不是在散列。这个算法需要是可逆的。散列不是。此外,哈希算法产生固定长度的输出。由于加密数据目标大小的限制,输出需要与输出长度相同。如果每次加密时更改CTR nonce,则输出的外观将始终不同。这就足够了吗?只要这还符合另外两个标准,就可以了。我该怎么做呢?如果我有足够的带宽,我会生成一个随机IV并将其嵌入到输出消息中,但我没有。我使用的密钥是使用ECDH协议生成的,IV也是从输入派生的。CTR模式要求给定密钥的nonce为non-repeat。CTR模式是基于XOR的,因此使用相同的密钥和nonce生成多个密文消息意味着仅使用消息就可以轻松恢复明文。