【问题标题】:Most efficient cryptography method for encrypting a string加密字符串的最有效密码学方法
【发布时间】:2012-07-06 19:33:42
【问题描述】:

加密字符串的最有效方法/密码学提供程序是什么,这会产生尽可能短的字符串。我们的目标是我们必须加密一个字符串,并且我们希望在加密后实现最短的字符串。

到目前为止,我们已经使用 Triple DES 和 Rijndael 进行了测试,两者都得到完全相同的加密长度。我也玩过更长和更短的键大小,但这也没有太大区别。

我不是密码学专家,所以我不知道是否有一些数学原因或解释为什么长度为 y 的字符串只能加密为长度 x - 希望听到您的专家意见。

【问题讨论】:

  • MD5 不是“加密”算法。无论输入的长度如何,所有散列函数都会产生相同长度的输出。此外,哈希是不可逆的(你不能“解密”它们)
  • 您可能还想指定加密需要的强度。您可以将 +1 添加到所有 char 值,从技术上讲,这将被加密,并会产生与输入字符串长度相同的输出字符串 - 这将是非常糟糕的加密!
  • 好点。 128 位应该是不错的起点。
  • ROT13 加密字符串与原始字符串长度相同。
  • most crypto methods return the encrypted string in base64 - 不,大多数加密方法与 Base64 没有任何关系,或者大幅增加其输入的长度(禁止填充)。 Base64 只是一种使用受限的可打印字符集对任意二进制数据(例如加密例程的输出)进行编码的方法。如果您可以直接存储加密例程的二进制输出,则不必费心通过 Base64 运行它。

标签: c# .net encryption


【解决方案1】:

你的琴弦有多长?很长的字符串可以在加密前进行压缩。

要生成与明文长度相同的密文,您可以:

  • 使用流密码,例如 RC4,或 eSTREAM 密码之一

  • 在 CTR 模式下使用块密码(例如 AES)。

如果您的字符串都是 8 字节或全部 16 字节,那么您可以在 ECB 模式下使用具有适当块大小且无填充的块密码。

【讨论】:

  • 字符串为 120 或更少的字符,因此对于压缩来说太短了。感谢其他建议,我会看看它。 :)
  • 如果您不是在寻找高级别的安全性,那么像 Vigenère 这样的经典密码可能会很有用。
猜你喜欢
  • 2014-10-15
  • 1970-01-01
  • 2011-10-10
  • 2017-10-08
  • 2020-12-24
  • 1970-01-01
  • 2013-02-13
  • 1970-01-01
相关资源
最近更新 更多