Laravel文档说
Laravel 的所有加密值都使用消息验证码 (MAC) 进行签名,因此它们的基础值一旦加密就不能被修改。
在实践中,这意味着有效载荷伴随着一点哈希值。这个值是如何产生的并不是什么秘密,因为 Laravel 是一个开源产品。源代码是这样说的:
// Once we get the encrypted value we'll go ahead and base64_encode the input
// vector and create the MAC for the encrypted value so we can then verify
// its authenticity. Then, we'll JSON the data into the "payload" array.
$mac = $this->hash($iv = base64_encode($iv), $value);
我个人不认为这个 MAC 对 Laravel 有什么好处。为什么会在那里?
我的意思是,如果我们已经拥有与消息一起使用的公钥,而私钥则隐藏在某处并openssl_encrypt
作为处理器。MAC 如何为安全做出贡献?或者它是否有助于其他事情?