我有两个函数和一个随机生成的密钥:
function encode ($a) {
$key = "7HLgdzXyaTaZuTss6xayLk3qLTJ2jsRLgPnMzpNwhwnEZsnHUfHxfYW5r3sQcZsC";
$aEncoded = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256,md5($key),$a,MCRYPT_MODE_CBC,md5(md5($key))));
return $aEncoded;
}
function decode ($a) {
$key = "7HLgdzXyaTaZuTss6xayLk3qLTJ2jsRLgPnMzpNwhwnEZsnHUfHxfYW5r3sQcZsC";
$aDecoded = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256,md5($key),base64_decode($a),MCRYPT_MODE_CBC,md5(md5($key))),"\0");
return $aDecoded;
}
当用户登录时,一些私有数据和当前时间戳将被编码并保存为会话 cookie。同时,该时间戳也将保存在 mysql 数据库中。现在我想在用户发送数据包到 ws 服务器时对其进行身份验证。是否安全将密钥发送到服务器,在那里解码并检查密钥的时间戳是否与保存在 mysql 数据库中的上一次登录时间戳匹配?(我还将检查密钥是否过期,因此如果有人不再登录,则 6 小时后密钥将不再起作用。)编辑: 用户将无法看到这些函数,密钥将在登录 php 文件中生成!
MCRYPT_RIJNDAEL_256
,但这可能不是您想要的。256
是指块大小,而不是密钥大小。通常指定 128 位块大小,因为它与 AES 兼容。 - zaph