PHP和MySQL使用Caesar转换来加密密码?

时间:2016-09-07 15:56:17

标签: php mysql encryption

我有一个PHP登录系统,我检查用户输入的用户名,并用我数据库中的每个用户名进行交叉检查。如果匹配,则会查看密码,如果再次匹配,则会授予用户访问其个人资料的权限。如果不是,它们将被重定向到登录屏幕。我目前将密码存储为实际密码,未加密或任何其他密码。我想知道是否有可能获得用户在注册时输入的密码,使用我将编程的算法,例如用相应的数字替换每个字母(显然比这更复杂)。然后我将密码存储为输出,当从数据库中读取密码时,它将被解密。这是安全的,如果我制作自己的算法,或者有人可以轻松查看我的代码并解密它吗?

1 个答案:

答案 0 :(得分:4)

存储加密或(颤抖)纯文本密码。

如果需要存储密码值,请存储加密哈希函数的返回值。没有必要“推出自己的”加密哈希算法。 (通过保持算法“秘密”,加密算法的强度。)

加密哈希算法是现代安全的主力。

https://en.wikipedia.org/wiki/Cryptographic_hash_function

当您需要测试密码时(通过将提交的密码与存储的密码值进行比较),只需通过相同的加密哈希函数运行提交的密码(待测试),然后从中返回并与之比较存储的哈希值。如果哈希值匹配,则明文密码匹配的概率极高。如果哈希值不匹配,则可以保证密码不匹配。

直接解决您提出的具体问题:

问:问:[我建议的实施]是否安全?

答:简短的回答是不,这不安全。我的答案的第一部分描述了处理密码令牌进行身份验证的更好方法。

问:如果我制作自己的算法,或者有人可以轻松查看我的代码并解密它?

答:在保持代码“秘密”的过程中找不到加密算法的强度。