Laravel进阶系列笔记--(十六)Laravel 加密&解密

作者: 温新

分类: 【Laravel】

阅读: 3559

时间: 2021-08-26 13:55:17

作者:温新

时间:2021-07-12

hi,我是温新,一名PHPer。

加密器加密

Laravel使用OpenSSL提供AES-256与AES-128来加密。在实际开发过程中还是推荐使用Laravel自带的加密方法来加密。

配置

要使用Laravel加密就必须先在配置文件config/app.php中设置key为32位随机字符串。Laravel提供了Artisan命令来快速生成key。

php artisan key:generate

加密

加密器使用Crypt门面提供的encryptString加密。

方法:encryptString

<span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(0, 0, 0)">Route</span>::<span style="box-sizing: border-box;color: rgb(0, 0, 0)">get</span>(<span style="box-sizing: border-box;color: rgb(170, 17, 17)">'cry'</span>, <span style="box-sizing: border-box;color: rgb(119, 0, 136)">function</span>(){</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(0, 85, 170)">$passwrod</span> <span style="box-sizing: border-box;color: rgb(152, 26, 26)">=</span> <span style="box-sizing: border-box;color: rgb(170, 17, 17)">'123456'</span>;</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(0, 85, 170)">$cryptPassword</span> <span style="box-sizing: border-box;color: rgb(152, 26, 26)">=</span> <span style="box-sizing: border-box;color: rgb(0, 0, 0)">\Illuminate\Support\Facades\Crypt</span>::<span style="box-sizing: border-box;color: rgb(0, 0, 0)">encryptString</span>(<span style="box-sizing: border-box;color: rgb(0, 85, 170)">$passwrod</span>);</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(119, 0, 136)">return</span> <span style="box-sizing: border-box;color: rgb(0, 85, 170)">$cryptPassword</span>;</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">});</span>

解密

方法:decryptString

<span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(0, 0, 0)">Route</span>::<span style="box-sizing: border-box;color: rgb(0, 0, 0)">get</span>(<span style="box-sizing: border-box;color: rgb(170, 17, 17)">'cry'</span>, <span style="box-sizing: border-box;color: rgb(119, 0, 136)">function</span>(){</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(0, 85, 170)">$passwrod</span> <span style="box-sizing: border-box;color: rgb(152, 26, 26)">=</span> <span style="box-sizing: border-box;color: rgb(170, 17, 17)">'123456'</span>;</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(0, 85, 170)">$cryptPassword</span> <span style="box-sizing: border-box;color: rgb(152, 26, 26)">=</span> <span style="box-sizing: border-box;color: rgb(0, 0, 0)">\Illuminate\Support\Facades\Crypt</span>::<span style="box-sizing: border-box;color: rgb(0, 0, 0)">encryptString</span>(<span style="box-sizing: border-box;color: rgb(0, 85, 170)">$passwrod</span>);</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(119, 0, 136)">return</span> <span style="box-sizing: border-box;color: rgb(0, 0, 0)">\Illuminate\Support\Facades\Crypt</span>::<span style="box-sizing: border-box;color: rgb(0, 0, 0)">decryptString</span>(<span style="box-sizing: border-box;color: rgb(0, 85, 170)">$cryptPassword</span>);</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">});</span>

哈希加密

哈希使用Hash门面为用户密码提供了安全的Bcrypt和Argon2哈希算法。

配置

哈希加密的默认配置文件在config/hashing.php中,有BcryptArgon2两驱动。

加密

方法:make

<span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(0, 0, 0)">Route</span>::<span style="box-sizing: border-box;color: rgb(0, 0, 0)">get</span>(<span style="box-sizing: border-box;color: rgb(170, 17, 17)">'cry'</span>, <span style="box-sizing: border-box;color: rgb(119, 0, 136)">function</span>(){</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(0, 85, 170)">$passwrod</span> <span style="box-sizing: border-box;color: rgb(152, 26, 26)">=</span> <span style="box-sizing: border-box;color: rgb(170, 17, 17)">'123456'</span>;</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(0, 85, 170)">$cryptPassword</span> <span style="box-sizing: border-box;color: rgb(152, 26, 26)">=</span> <span style="box-sizing: border-box;color: rgb(0, 0, 0)">\Illuminate\Support\Facades\Hash</span>::<span style="box-sizing: border-box;color: rgb(0, 0, 0)">make</span>(<span style="box-sizing: border-box;color: rgb(0, 85, 170)">$passwrod</span>);</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(119, 0, 136)">return</span> <span style="box-sizing: border-box;color: rgb(0, 85, 170)">$cryptPassword</span>;</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">});</span>

验证密码

方法:check

<span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(0, 0, 0)">Route</span>::<span style="box-sizing: border-box;color: rgb(0, 0, 0)">get</span>(<span style="box-sizing: border-box;color: rgb(170, 17, 17)">'cry'</span>, <span style="box-sizing: border-box;color: rgb(119, 0, 136)">function</span>(){</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(0, 85, 170)">$passwrod</span> <span style="box-sizing: border-box;color: rgb(152, 26, 26)">=</span> <span style="box-sizing: border-box;color: rgb(170, 17, 17)">'123456'</span>;</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(0, 85, 170)">$cryptPassword</span> <span style="box-sizing: border-box;color: rgb(152, 26, 26)">=</span> <span style="box-sizing: border-box;color: rgb(0, 0, 0)">\Illuminate\Support\Facades\Hash</span>::<span style="box-sizing: border-box;color: rgb(0, 0, 0)">make</span>(<span style="box-sizing: border-box;color: rgb(0, 85, 170)">$passwrod</span>,[<span style="box-sizing: border-box;color: rgb(170, 17, 17)">'rounds'</span><span style="box-sizing: border-box;color: rgb(152, 26, 26)">=></span><span style="box-sizing: border-box;color: rgb(17, 102, 68)">10</span>]);</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(119, 0, 136)">if</span> (<span style="box-sizing: border-box;color: rgb(0, 0, 0)">\Illuminate\Support\Facades\Hash</span>::<span style="box-sizing: border-box;color: rgb(0, 0, 0)">check</span>(<span style="box-sizing: border-box;color: rgb(170, 17, 17)">'123456'</span>, <span style="box-sizing: border-box;color: rgb(0, 85, 170)">$cryptPassword</span>)) {</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">        <span style="box-sizing: border-box;color: rgb(119, 0, 136)">return</span> <span style="box-sizing: border-box;color: rgb(170, 17, 17)">'密码正确'</span>;</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">    }</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px">});</span><br></br><span style="box-sizing: border-box;padding-right: 0.1px"><span style="box-sizing: border-box"></span></span>

我是温新

每天进步一点点,就一点点

请登录后再评论