使用 mcrypt_encrypt() 给我警告 "Size of key is too long"

Using mcrypt_encrypt() give me warning "Size of key is too long"

我正在尝试在 PHP 中使用 mcrypt_encrypt() 但我在使用函数加密时遇到问题:

我的代码是:

变量:

$key = "1e1r1r1t1y1y1g1g1g1g1g1345678910"; // That is a example, the real key have 32 long too.
$ref="12013515"; // example value

// Tamanio Encripyt ....
$iv_size = mcrypt_get_iv_size(MCRYPT_3DES,MCRYPT_MODE_CBC);
$iv = mcrypt_create_iv($iv_size,MCRYPT_RAND);
// Lunch
$stringEncrypted = mcrypt_encrypt(MCRYPT_3DES,$key,$ref,MCRYPT_MODE_CBC,$iv);

如果我这样做,PHP 显示错误:

Warning: mcrypt_encrypt(): Size of key is too large for this algorithm

我需要使用加密 3DES...可能是什么问题?

你的钥匙太长了。 CBC 模式下 3DES 的最大密钥长度为 24 个字符。

3DES 的密钥长度为 168 位。 168 位/24 个字符 = 每个字符 7 位。

要获得给定算法的最大密钥长度,请使用:

mcrypt_get_key_size(MCRYPT_3DES,MCRYPT_MODE_CBC)

@见http://php.net/manual/en/function.mcrypt-get-key-size.php

此算法不支持大小为 32 的密​​钥。仅支持大小为 24 的键。

对于这种情况,我需要忽略此类加密的大小值(我无法更改加密的密钥和类型)。

我读了一些 post 有同样问题和解决方案的文章。

感谢大家的帮助。