【问题标题】:What is the strongest encryption to use on protecting text?用于保护文本的最强加密是什么?
【发布时间】:2010-10-10 09:51:16
【问题描述】:

大家好 我需要加密文本以编程方式使用的最佳加密是什么?
一般来说,我有需要加密的字符串输入文件,然后在应用程序中读取文件
为应用程序流解密它。
用 C++

【问题讨论】:

  • 在什么意义上最好?每个算法都有在选择过程中必须考虑的权衡。
  • @Ignacio:“什么是最强加密[...]?”
  • 在选择时必须考虑哪些取舍?
  • 那么,您是在获取一个文件并对其进行加密,然后在应用程序中对其进行解密?应用程序如何获取密钥?坏人对应用程序及其环境有多少访问权限?是否存在效率问题?无论答案如何,都不要编写自己的加密软件。你几乎肯定会出错并留下漏洞。将实施留给专业人员。

标签: c++ encryption text


【解决方案1】:

最强的加密是使用one-time pad(例如异或)。一次性填充算法(与大多数其他常用算法不同)在正确使用时可证明是安全的。

此算法的一个严重问题是一次性便笺的分发必须安全地完成,这通常是不切实际的。如果可以安全地传输一次性密码,那么通常也可以使用同一通道安全地发送消息。

在无法通过其他渠道安全发送信息的情况下,使用public key cryptography。通常,这些算法的强度会随着密钥长度的增加而增加,除非在算法中发现了一些关键的弱点。 RSA是一种常用的公钥算法。

要使用公钥加密技术获得强加密,密钥往往很大(数千位并不少见)并且算法的计算速度很慢。另一种方法是改用symmetric key algorithm。这些通常可以使用较短的密钥获得相同强度的加密,并且可以更快地加密和解密。和一次性密本一样,这也有密钥分配的问题,但这次密钥很短,所以更可行的是能够安全地传输它。一个常用的对称密钥算法的例子是AES

【讨论】:

  • 它不是唯一安全的算法,远非如此。事实上,维基百科链接指的是一类同样强大的“香农安全”算法。很简单,因为OTP(text, key) 是完全安全的,所以OTP(OTP(text, key1), key2) 也是如此。
【解决方案2】:

One time pad 是最强大的,但您可能正在寻找可以在您的应用程序中轻松使用的东西。查看此页面以了解算法的强度 - http://security.resist.ca/crypt.shtml,这里有一个 C++ 库:crypto++(链接指向比较不同算法性能的基准)http://www.cryptopp.com/benchmarks.html

【讨论】:

    【解决方案3】:

    答案取决于您所说的“强加密”是什么意思。

    当密码学家谈论强加密模式时,他们通常期望它至少具有两个属性:

    • 机密性:即在给定密文的情况下,无法找到有关明文的任何信息(明文长度可能除外)。
    • 完整性:在没有消息接收者注意到修改的情况下,攻击者不得修改密文。

    当密码学家将密码系统称为“在某些假设下可证明是安全的”时,他们通常表示该密码系统可以抵御选定的密文攻击,除非不满足假设(例如,对于某些众所周知的问题没有有效的算法)。

    特别是,其他一些答案声称一次性填充是最安全的算法。然而,单独的一次性垫并不能提供任何完整性。没有任何修改,很容易修改密文,而接收者不会注意到修改。这意味着一次性密码本只能满足一种被称为“完全保密”的相当薄弱的安全概念。 IE。如今,将一次性便笺称为“可证明安全”是一种误导,而没有提及这仅适用于不包括消息完整性的安全模型。

    要选择强加密模式,还可以考虑实际情况。例如,有多少密码分析进入了加密模式,或者实现该算法的密码库的分析情况如何。考虑到这一点,选择一个知名的密码库,使用 AES 正确加密,使用 HMAC 进行身份验证将接近最优。

    【讨论】:

      猜你喜欢
      • 2018-01-07
      • 2021-12-25
      • 1970-01-01
      • 2011-07-05
      • 1970-01-01
      • 1970-01-01
      • 2020-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多