authentication - 使用加密与解密的身份验证
问题描述
用户登录密码认证时哪个更好
使用加密算法对用户输入的密码进行加密,并将其与存储的加密用户密码进行比较
或者
使用解密算法解密存储的用户加密密码并将其与用户输入的密码进行比较
任何输入将不胜感激
解决方案
为了允许访问,密码应该被散列 而不是加密。
明文密码永远不应存储在任何系统上。只应存储该密码的生成哈希。
哈希是一种单向加密,它将密码字符串变成乱码的唯一引用字符串。
加密的密文是这些字符串之一,可以转换回纯文本字符串。
但是你不需要知道密码,你只需要知道它是一样的——登录发生的时候;用户名/电子邮件或用于选择数据库行的任何内容。散列密码被抓取并带回,然后在登录时给出的明文密码以相同的方式进行散列。如果结果相同,则密码字符串与原始密码字符串相同,因此用户可以登录。
就像做蛋糕一样。
你有一份成分清单——但这些都是秘密的,你不能与任何人分享这些。所以你在橱柜里有一个用这些原料做的蛋糕。蛋糕是(hash
呃,hashcake?),配料是password
。
因此,当其他人尝试为您制作蛋糕时,他们会使用他们的配料,它会制作出不同的蛋糕,您不知道他们的配料是什么,但是一旦煮熟(300 毫秒),它就会变成不同的蛋糕,所以沙漠厨师在厨房知道不是你。只有白痴才会在蛋糕里放这么多大蒜。
推荐阅读
- sql - 如何将所有列转换为名称和值 SQL(如 Python 中的 pd.unstack(level=-1) )
- angular - 如何在谷歌地图中使用for循环插入纬度和对数
- reactjs - 在 React 组件中如何绑定对象值?
- android - 如何拖动 org.webrtc.SurfaceViewRenderer android?
- android - Kotlin - 以编程方式创建的 Spinner 箭头丢失
- node.js - 如何将令牌发送到我的后端服务器 node.js?
- html - 在 ionic 4 中编辑 shadow DOM - ion-slides
- flutter - 开关状态不会在点击时改变
- python - 如何在 PyQt5 中将波斯语设置为默认 QTextEdit?
- reportportal - 安装后更改 ReportPortal 数据库配置