【发布时间】:2018-05-17 09:32:27
【问题描述】:
我的服务器遇到了一个问题,这让我提出了一个问题 - AES-256 加密是否可靠一致?
所以我的节点服务器,为了避免 DDOS 漏洞,同时保持用户数据匿名,从请求中获取一个 IP,对其进行加密,并存储它在过去 24 小时内发出请求的次数。
它通过使用完全相同的密码重新加密 IP 来检查用户是否在过去 24 小时内提出了请求。然后,它将它与 first 存储的 IP 相匹配。
然后:
Error: Can't find data: /ipcount/d00c526612cec9e5d3e201af35993c75. Stopped at ipcount
d00c526612cec9e5d3e201af35993c75 应该是加密字符串,但数据库的行为就像以前从未见过一样。那么我可以让它使用相同的密码进行一致的加密吗?
提前致谢。
这里是加密函数...
const crypto = require('crypto'),
algorithm = 'aes-256-ctr',
password = 'aSecureNotSharedOverAForumPassword'
function encrypt(text){
var cipher = crypto.createCipher(algorithm,password)
var crypted = cipher.update(text,'utf8','hex')
crypted += cipher.final('hex');
return crypted;
}
【问题讨论】:
-
我添加了一个捕获
try...catch的错误并且它起作用了......但我仍然想要一个答案 -
在相同的输入、模式等条件下,AES 加密是一致的。如果不一致,它将没有用处。不一致的使用会产生不一致的结果。
-
加密它并不能让它保持匿名,因为它可以很容易地被解密。像 bcrypt 这样的东西可能更合适。
-
对;其他人也说过的话。做了一个节点版本
-
加密是解决这个问题的错误工具。任何加密哈希都会更合适。 SHA-256 广泛可用。见
crypto.createHash。
标签: encryption cryptography aes