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 个字节)。
我对加密不是很熟悉,我们现在在我们的应用程序中使用 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 个字节)。