大家好
我需要加密文本以编程方式使用哪种最佳加密方式?
一般来说,我有输入文件,我需要加密字符串然后在应用程序中读取文件
解决申请流程
用c ++
答案 0 :(得分:13)
最强的加密方法是使用one-time pad(例如使用XOR)。一次性填充算法(与大多数其他常用算法不同)在正确使用时可证明是安全的。
该算法的一个严重问题是必须安全地完成一次性垫的分配,这通常是不切实际的。如果可以安全地传输一次性打击垫,那么通常也可以使用相同的频道安全地发送消息。
在无法通过其他渠道安全发送信息的情况下,使用public key cryptography。通常,随着密钥长度的增加,这些算法的强度会增加,除非在算法中发现一些关键的弱点。 RSA是一种常用的公钥算法。
要使用公钥加密进行强加密,密钥往往很大(数千个位并不罕见)并且算法计算速度很慢。另一种方法是使用symmetric key algorithm代替。这些通常可以使用更短的密钥获得相同的强度加密,并且可以更快地加密和解密。像一次性垫一样,这也存在密钥分配的问题,但这次密钥非常短,因此能够安全地传输密钥更为可行。常用对称密钥算法的一个示例是AES。
答案 1 :(得分:2)
一次性垫是最强的,但您可能正在寻找可以在您的应用中轻松使用的东西。查看此页面以了解算法的强度 - http://security.resist.ca/crypt.shtml,这里有一个C ++库:crypto ++(链接指向比较不同算法性能的基准测试)http://www.cryptopp.com/benchmarks.html。
答案 2 :(得分:0)
答案取决于“强加密”的含义。
当密码学家谈论强加密模式时,他们通常期望它至少有两个属性:
当密码学家称密码系统“在某种假设下可证明是安全的”时,它们通常意味着密码系统对选择的密文攻击是安全的,除非假设(例如,对某些众所周知的问题没有有效的算法)不满足。
特别是,其他一些答案声称一次性打击垫是最安全的算法。但是,单独的一次性垫不能提供任何完整性。在没有任何修改的情况下,很容易修改密文,而接收者没有注意到修改。这意味着一次性垫只能满足一种称为“完全保密”的相当弱的安全概念。即如今,将一次性密码称为“可证明安全”是非常误导的,并没有提到这仅存在于不包含消息完整性的安全模型下。
要选择强加密模式,还可以考虑实际方面。例如,已经进入加密模式的密码分析了多少,或者分析了实现该算法的加密库的程度。考虑到这一点,选择一个众所周知的加密库,使用AES进行适当加密,使用HMAC进行身份验证将接近最佳状态。