PHP中的OpenSSL加密
我对我在系统中用来通过URL的令牌进行了加密,并且每次触发加密令牌时,它都具有相同的最后2个字符 这是我的密码:PHP中的OpenSSL加密,php,encryption,token,Php,Encryption,Token,我对我在系统中用来通过URL的令牌进行了加密,并且每次触发加密令牌时,它都具有相同的最后2个字符 这是我的密码: <?php function encrypt($string) { $output = false; $encrypt_method = "AES-256-CBC"; $secret_key = 'ExampleKey'; $secret_iv = 'ExampleIv'; // hash $key = hash('sha25
<?php
function encrypt($string)
{
$output = false;
$encrypt_method = "AES-256-CBC";
$secret_key = 'ExampleKey';
$secret_iv = 'ExampleIv';
// hash
$key = hash('sha256', $secret_key);
$iv = substr(hash('sha256', $secret_iv), 0, 16);
$output = openssl_encrypt($string, $encrypt_method, $key, 0, $iv);
$output = base64_encode($output);
return $key;
}
?>
我只想删除加密中的“09”或使其不同。首先,您应该从函数中返回
$output
,而不是$key
但是,由于您的不同示例输出,这里的帖子显然有误,所以答案不是因为openssl,而是因为base64编码大小。如果您的$string
超过14个字符,则会得到不同的结尾
请参见此示例:
eg #1
token=Z0ZkSmZhWjMzRUxTcCtxY2o1ZlFJdz09
eg #2
token=STE2b05oMVkwK3FIV0lhUkYyN0tmdz09