自验证加密字符串 - 是可行的



我有一个键串,使客户拥有其他功能。

显然,我希望该软件检查该字符串是否有效,并且未经修改。

是可行的以下想法:

  • 将键字符串作为加密值,然后在base64中对其进行编码(出于我的目的,我的加密字符串大约是100个字符(
  • 当然,使用私人盐来计算校验和
  • 将校验和编织到加密数据

原则上:

xxxxCxxxxxxCxxxxxxxxCxxxxxxxxxxCxxxxxxxxxxxxxCxxx
  • 编织到加密数据的地方可以通过加密的第一个cher来确定,最多创建16种不同的模式。

检查代码有效性时,我简单地"解开"了校验和测试是否正确,从而知道数据是否已修改。

我的想法是正确的吗?

您想的加密功能称为"身份验证",并且有许多公认的方法。您应该强烈避免发明自己的发明,尤其是使用诸如MD5之类的长期耗尽的哈希。当对加密系统进行身份验证时,它可以检测到对密文的更改。

您最好的方法是使用身份验证的密码模式,例如AES-GCM。正确使用的是,将加密结合在单个操作中的身份验证。在解密身份验证的方案时,如果修改了密码文本,解密将失败。

如果您无法访问AES-GCM,则下一个选项是AES-CBC HMAC,它使用随机IV的无处不在的AES-CBC,并附加了一种加密的哈希(称为HMAC(到邮件的结尾进行身份验证。为了进行身份验证,您需要删除HMAC,使用它来验证密码文本未修改,然后正常解密。该方案通常称为"加密然后Mac"。

实现细节将取决于您的语言和框架。

最新更新