加密(Encryption)
优质
小牛编辑
132浏览
2023-12-01
加密是使用某些算法将纯文本转换为消息的过程,以便任何第三个用户都无法读取信息。 这有助于传输敏感信息,因为入侵者瞄准传输信息的机会较少。
使用称为Cryptography的过程执行Cryptography 。 要加密的文本称为Cipher Text ,加密后获得的文本或消息称为Cipher Text 。 将密文转换为纯文本的过程称为Decryption 。
Laravel使用AES-256和AES-128加密器,它使用Open SSL进行加密。 Laravel中包含的所有值都使用协议Message Authentication Code进行签名,以便在加密后基础值不会被篡改。
配置 (Configuration)
用于在Laravel中生成key的命令如下所示 -
php artisan key:generate
请注意,此命令使用PHP安全随机字节的生成器,您可以看到输出,如下面给出的屏幕截图所示 -
上面给出的命令有助于生成可以在Web应用程序中使用的密钥。 观察下面显示的屏幕截图 -
Note
加密值在config/app.php文件中正确对齐,该文件包括两个加密参数,即key和cipher 。 如果使用此键的值未正确对齐,则Laravel中加密的所有值都将不安全。
加密过程
可以使用Laravel类控制器中的encrypt helper来完成值的encrypt helper 。 这些值使用OpenSSL和AES-256密码加密。 所有加密值都使用消息验证代码(MAC)进行签名,以检查加密字符串的任何修改。
下面显示的代码在控制器中提及,用于存储机密或敏感消息。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class DemoController extends Controller{
**
* Store a secret message for the user.
*
* @param Request $request
* @param int $id
* @return Response
*/
public function storeSecret(Request $request, $id){
$user = User::findOrFail($id);
$user->fill([
'secret' => encrypt($request->secret)
])->save();
}
}
解密过程
使用decrypt helper完成值的decrypt helper 。 请注意以下代码行 -
use Illuminate\Contracts\Encryption\DecryptException;
// Exception for decryption thrown in facade
try {
$decrypted = decrypt($encryptedValue);
} catch (DecryptException $e) {
//
}
请注意,如果由于使用了无效的MAC而导致解密过程失败,则会引发相应的异常。