Litteraly,我为此而自杀。这应该是一件小事,但我已经花了几个小时的时间。
function ssl_encrypt($pass, $data) {
$salt = substr(md5(mt_rand(), true), 8);
$key = md5($pass . $salt, true);
$iv = md5($key . $pass . $salt, true);
$ct = mcrypt_encrypt (MCRYPT_RIJNDAEL_128, $key, $data,
MCRYPT_MODE_CBC, $iv);
return base64_encode('Salted__' . $salt . $ct);
}
$key = ssl_encrypt('super', trim($_POST['pass']));
我正在编写一个字符串并使用以下命令保存到文件:
$value = $_POST['service'] . "=" . $key . "\n";
file_put_contents($file, $value , FILE_APPEND);
它输出的内容如下:
U2FsdGVkX1 + 0NB4 ++Kx28hUWNGwIqBoabI2O22U1TbpJ0n4FhzZvGtmSWiP7VOZj⏎
我认为最后一个符号就是这个" \ n"来自
$value = $_POST['service'] . "=" . $key . "\n";
我甚至尝试过这样的事情:
$value = $_POST['service'] . "=" . $key.PHP_EOL;
$fh = fopen($file,"a+");
fwrite($fh, $value); //write to txtfile
fclose($fh);
仍然输出:
U2FsdGVkX1 + 0NB4 ++Kx28hUWNGwIqBoabI2O22U1TbpJ0n4FhzZvGtmSWiP7VOZj⏎
如何摆脱最后的退格符号?请注意,在这种情况下,substring不是一个选项。
这是我解密的方式:
function ssl_decrypt($pass, $data) {
$data = base64_decode($data);
$salt = substr($data, 8, 8);
$ct = substr($data, 16);
$key = md5($pass . $salt, true);
$iv = md5($key . $pass . $salt, true);
$pt = mcrypt_decrypt (MCRYPT_RIJNDAEL_128, $key, $ct,
MCRYPT_MODE_CBC, $iv);
return $pt;
}
$Loader = new josegonzalez\Dotenv\Loader($pathtoenv);
//解析.env文件
$environment = (new josegonzalez\Dotenv\Loader($pathtoenv))
->parse()
->toArray();
$digitalpass = ssl_decrypt('super', (string)$_ENV['digital']);
答案 0 :(得分:1)
我认为有很多方法可以做到:
substr($output, 0, -1);
chop($output,"⏎");
trim($output)
答案 1 :(得分:1)
使用以下代码段从字符串中删除所有不可打印的字符:
$trimmedVal = preg_replace("/\s+|[[:^print:]]/", "", $value)