问题和应用程序 BG:所以我正在创建一个 nodeJS 应用程序来存储一些敏感数据,并且我想加密所有内容。但是当我尝试用错误的密钥解密一些数据时,我得到一个 TypeError: DecipherFinal 失败错误。
以下是我的应用程序的安全工作方式:(请注意,这是针对 AppJS 而不是面向 Web 的应用程序)
用户可以“创建帐户”,即创建一个新文件;文件的第一行用作标识符: encrypt("Somestring" + username)
用户可以登录,打开文件并使用他们的密码解密第一行。如果它恰好是“Somestring”+ 用户名,那么我们将用户登录。
只要我不使用错误的密钥,这就会正常工作,这会导致 DecipherFinal 失败错误。
问题:
甚至有可能做我想做的事吗?我假设如果我使用不正确的密钥通过解密函数运行数据,我只会得到不正确的数据。
这是一个糟糕的设计吗?我在某处读到,您不应该将散列密码存储在与使用该密码加密的数据相同的数据库中,因此我认为用户根本不需要存储密码,而是可以跟踪它,并且他们可以解密预期的消息授权。数据的性质使得其他人无法获取数据非常重要,但用户可以恢复他们的数据并不是很重要。
这是“滚动我自己的加密货币”吗?这是否意味着坚持已知模式或仅仅坚持经过验证的原语和算法?如果这是我自己的,是否有任何可用于 Node 的加密容器的实现?
代码:
https://gist.github.com/sanarothe/5993384
非常感谢,
卡梅伦