java aes的php版本求助
这是一个java生成一个128的对称密钥,可是php版本的咋写?
这样写好像不是:
$strEncode = base64_encode(openssl_random_pseudo_bytes(128));
return $strEncode;
有前辈告知一下嘛。 PHP 可以使用 openssl_encrypt ;
参考:
https://www.php.net/manual/zh/function.openssl-encrypt.php
https://www.php.net/manual/zh/function.openssl-get-cipher-methods.php
wychao 发表于 2021-4-22 15:55
PHP 可以使用 openssl_encrypt ;
参考:
https://www.php.net/manual/zh/function.openssl-encrypt.php
这是加密,我要的是生成对称密钥。 class Aes
{
protected string $method;
protected string $secret_key;
protected string $iv;
protected mixed $options;
/**
* 构造函数
*
* @Param string $key 密钥
* @param string $method 加密方式
* @param string $iv iv向量
* @param mixed $options 还不是很清楚
*
*/
public function __construct($key='1BA55BB7CFF1ED8A', $method = 'AES-128-ECB', $iv = '', $options = 0)
{
$this->secret_key = $key ?? '';
$this->method = $method;
$this->iv = $iv;
$this->options = $options;
}
/**
* 加密方法,对数据进行加密,返回加密后的数据
* @param string $data 要加密的数据
* @Return string
*/
public function encrypt(string $data): string
{
return (openssl_encrypt($data, $this->method, $this->secret_key, $this->options, $this->iv));
}
/**
* 解密方法,对数据进行解密,返回解密后的数据
* @param string $data 要解密的数据
* @return string
*/
public function decrypt(string $data): string
{
return openssl_decrypt(trim($data), $this->method, $this->secret_key, $this->options, $this->iv);
}
}
public static function getAesEcb128($data, $crypt_key="8GH5z")
{
$result =openssl_decrypt(base64_decode($data), 'aes-128-ecb', base64_decode($crypt_key), OPENSSL_RAW_DATA);
return $result ? $result : $data;
}
public static function setAesEcb128($data, $crypt_key="8GH5z")
{
return base64_encode(openssl_encrypt($data, 'aes-128-ecb', base64_decode($crypt_key), OPENSSL_RAW_DATA));
}
页:
[1]