bcrypt和encrypt的区别

问题描述 投票:0回答:1

两者之间的区别是什么?bcryptencrypt以及如何在以下情况下将值恢复到正常状态 laravel?

laravel encryption bcrypt
1个回答
3
投票

bcrypt() 是为了创建一个 Hash这是一个将纯文本字符串转化为哈希值的单向过程。你不能解除一个值的哈希值所以没有办法将值返回到它的 "正常 "状态。

encrypt() 是 "混淆 "的意思,它将纯文本字符串改变成一个非人类可读的值。这就是 "混淆"。 单向过程,因为 decrypt() 允许你获得纯文本值。

一些例子。

bcrypt('password'); // '$2y$10$s8MB0AJsUmUN/NCWqZuDx.KrXXNYw50fFdJWqKR28qoOeMN.Rahfq'

在上面的例子中,字符串 'password' 被转化为那个看似随机的字符串。没有办法撤销这一点,这就是为什么哈希是存储敏感信息(如密码)的首选方法。你可以比较哈希值来确定它们是否匹配,但这需要你明确知道原始值。

Hash::compare('12345678', bcrypt('password')); // false
Hash::compare('password', bcrypt('password')); // true

至于加密

$encrypted = encrypt('password'); // 'eyJpdiI6Im9uQ1M0NDNhcXBWdnJ1azBXWDQwMlE9PSIsInZhbHVlIjoiZmxrcGRNVGY3MnIzbVhkMmsyQzNVUT09IiwibWFjIjoiMTViZWVjMWJiYTAzZTNiNTc3YzljNmMwMjI5ZTBmZjc3M2UyN2EwOGZhMWFiOTg5MDY2NDY1Y2QwZjRmZTgyNSJ9'
$decrypted = decrypt($encrypted); // 'password'

如你所见,解密一个加密值是很简单的事 这种方法对于隐藏非敏感信息很有用,但绝对不能用来存储敏感信息。

© www.soinside.com 2019 - 2024. All rights reserved.