从字面上看,我正在为此自杀。这应该是一件小事,但我已经花了大约几个小时在这上面。
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⏎
如何摆脱最后一个退格符号?请注意,在这种情况下,子字符串不是一个选项。
这是我解密的方式:
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']);
最佳答案
我认为可以有很多方法来做到这一点:
- 使用 substr() 删除最后一个字符:
substr($output, 0, -1);
- 使用 chop() 删除您想要的字符串:
chop($output,"⏎");
- 或者可能使用 trim(),就像 Kenney 所说:
trim($output)
关于php - 如何从字符串末尾删除退格字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35257275/