php openssl 的到期时间?

Expiry time on php openssl?

我对加密不是很熟悉,我们现在在我们的应用程序中使用 PHP 的 openssl_encrypt/decrypt。

是否可以让 encryption/decryption 仅在到期时间之前工作?例如也许密钥会过期?

是的,有可能,您必须在需要加密的内容之前附加创建时间戳作为字节:

$time = pack('N', time());
$enc = openssl_encrypt($time . $other_data, ...);

解密时:

$dec = openssl_decrypt($encrypted, ...);
$time = unpack('N', substr($dec, 0, 4));
$other_data = substr($dec, 4);
if (time() - $time[1] > $EXPIRY_SECONDS)
   die('Expired');

我在 pack/unpack 中使用的 N 标志用于 Big Endian 字节顺序,您也可以将 V 用于小端或 L 用于 machine-dependent,因为时间戳适合 32 位整数(4 个字节)。