PHP openssl 加解密
不说废话上代码
加密
$str_padded = 'android'; //要加密的字符串
$iv = "12345678"; 偏移值 cbc必填
$data['code'] = base64_encode(openssl_encrypt($this->pkcspadding($str_padded,8),'des-cbc',"33524ddt",openssl_no_padding,$iv)); //加密之后填充,然后base64
解密
$decrypted = openssl_decrypt(base64_decode($data['code']), 'des-cbc', '33524ddt', openssl_no_padding,$iv);
dump($this->pkcs5_unpad($decrypted));//去掉填充
/**
* 填充
*
* @param $str
* @param $blocksize
* @return string
*/
private function pkcspadding($str, $blocksize)
{
$pad = $blocksize - (strlen($str) % $blocksize);
return $str . str_repeat(chr($pad), $pad);
}
/*
* 对解密后的已字符填充的明文进行去掉填充字符
*/
function pkcs5_unpad($text) {
$pad = ord($text{strlen($text) - 1});
if ($pad > strlen($text)){
return false;
}
return substr($text, 0, -1 * $pad);
}
注:注意和别的语言对接的时候base64加密有差异要注意特殊字符过滤
注:和java对接的时候 发现java的iv字段是byte[] iv = { 1, 2, 3, 4, 5, 6, 7, 8 }类型 查了好久 最后发现php对应的主要 字符串就ok了如下
上一篇: Oracle数据库密码重置、导入导出库命令示例应用
下一篇: oracle清空所有表数据