我想在客户端(angular.js)加密密码,将其发送到服务器(express.js)并在服务器上解密。我想要一个简单的方法。我使用 $http 来发布请求。我知道退出 angular-bcrypt 库和 nodeJS 中的相同,但对我来说不值得,因为它只有方法比较。
我想要这样的东西:
password = document.getElementById('txtPassword').value;
var xorKey = 129; /// you can have other numeric values also.
var result = "";
for (i = 0; i < password.length; ++i) {
result += String.fromCharCode(xorKey ^ password.charCodeAt(i));
}
但是,我只找到了在c#中解密的方法:
public bool Authenticate(string userName, string password)
{
byte result = 0;
StringBuilder inSb = new StringBuilder(password);
StringBuilder outSb = new StringBuilder(password.Length);
char c;
for (int i = 0; i < password.Length; i++)
{
c = inSb[i];
c = (char)(c ^ 129); /// remember to use the same XORkey value you used in javascript
outSb.Append(c);
}
password = outSb.ToString();
// your rest of code
}
任何想法?非常感谢。 :P
原文由 Izaskun Peña 发布,翻译遵循 CC BY-SA 4.0 许可协议
永远不要解密密码。它们应该使用单向加密进行散列。服务器应提供 随机数,以便客户端在每次登录时返回不同但可验证的答案。
所有密码都应该经过散列、加盐和拉伸。如果可以解密,那就不安全了。请参阅 严重的安全性:如何安全地存储用户的密码。
我最喜欢的答案:
也可以看看:
是否值得在客户端散列密码
2017 年 3 月更新:考虑获得免费的 SSL 证书
https://letsencrypt.org/about/