我有CyryptoJs工作(作为服务),但我不认为我正在观察它的最佳实践。
RangeBegin=20,4~4,2~6,2
secretKey 可能不应该像那样暴露。什么是提供这种价值的聪明方法?
答案 0 :(得分:0)
存在一些安全问题。
加密密钥对每个用户都必须是唯一的。
使用全长密钥:AES,128,192或256位。
最好使用从CSPRNG(密码安全随机数生成器)获得的随机字节的全长加密密钥。
使用字符串作为密钥,尤其是短密钥则不安全。如果您需要用户输入密码,请使用密钥派生功能(如PBKDF2(基于密码的密钥派生功能2))来派生安全加密密钥。
需要提供IV(初始化向量),它必须是来自每个加密唯一的CSPRNG的随机字节数组。只需在加密数据前加上IV,以便在解密过程中使用,它不需要保密。
最好完全指定所有加密参数,例如模式和填充,以实现互操作性。
如果有可能输入错误的密钥或攻击者替换文件添加加密身份验证。
为加密数据添加版本指示器,以便将来在必要时进行更改。
最后,您将如何存储加密密钥,没有简单的答案。