Laravel进阶系列笔记--(十六)Laravel 加密&解密
作者:温新
时间: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
中,有Bcrypt
和Argon2
两驱动。
加密
方法: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>
我是温新
每天进步一点点,就一点点
请登录后再评论