PHP使用AES,ECB模式块和PKCS5Padding生成对称密钥

Ric*_*ins 4 php key aes ecb

我需要在ECB模式块和PKCS5Padding中使用标准AES生成对称密钥,但我不能这样做.

在我的搜索过程中,我只发现了使用上述条件加密某些内容的函数.但我不想要这个; 我想生成一个对称密钥.

我需要能够与Web服务进行通信,我需要这个,因为它是加密的一部分.

我看过phpseclib,但是库也没有生成对称密钥.

Ja͢*_*͢ck 5

首先,要对你需要即兴创作的输入做PKCS#5填充:

// source: http://php.net/manual/en/ref.mcrypt.php#69782
function pkcs5_pad($text, $blocksize) 
{
    $pad = $blocksize - (strlen($text) % $blocksize);
    return $text . str_repeat(chr($pad), $pad);
}
Run Code Online (Sandbox Code Playgroud)

然后选择你的算法并生成IV:

$alg = MCRYPT_RIJNDAEL_128; // AES
$mode = MCRYPT_MODE_ECB; // not recommended unless used with OTP

$iv_size = mcrypt_get_iv_size($alg, $mode);
$block_size = mcrypt_get_block_size($alg, $mode);
$iv = mcrypt_create_iv($iv_size, MCRYPT_DEV_URANDOM); // pull from /dev/urandom
Run Code Online (Sandbox Code Playgroud)

初始化加密密钥:

$key = "This is a very secret key";
Run Code Online (Sandbox Code Playgroud)

将填充应用于输入并加密

$input = pkcs5_pad($input, $block_size);

$crypttext = mcrypt_encrypt($alg, $key, $input, $mode, $iv);
Run Code Online (Sandbox Code Playgroud)