我有一个键串,使客户拥有其他功能。
显然,我希望该软件检查该字符串是否有效,并且未经修改。
是可行的以下想法:
- 将键字符串作为加密值,然后在base64中对其进行编码(出于我的目的,我的加密字符串大约是100个字符(
- 当然,使用私人盐来计算校验和
- 将校验和编织到加密数据
原则上:
xxxxCxxxxxxCxxxxxxxxCxxxxxxxxxxCxxxxxxxxxxxxxCxxx
- 编织到加密数据的地方可以通过加密的第一个cher来确定,最多创建16种不同的模式。
检查代码有效性时,我简单地"解开"了校验和测试是否正确,从而知道数据是否已修改。
我的想法是正确的吗?
您想的加密功能称为"身份验证",并且有许多公认的方法。您应该强烈避免发明自己的发明,尤其是使用诸如MD5之类的长期耗尽的哈希。当对加密系统进行身份验证时,它可以检测到对密文的更改。
您最好的方法是使用身份验证的密码模式,例如AES-GCM。正确使用的是,将加密结合在单个操作中的身份验证。在解密身份验证的方案时,如果修改了密码文本,解密将失败。
如果您无法访问AES-GCM,则下一个选项是AES-CBC HMAC,它使用随机IV的无处不在的AES-CBC,并附加了一种加密的哈希(称为HMAC(到邮件的结尾进行身份验证。为了进行身份验证,您需要删除HMAC,使用它来验证密码文本未修改,然后正常解密。该方案通常称为"加密然后Mac"。
实现细节将取决于您的语言和框架。