由于不建议使用Mcrypt,因此我想在代码中使用OpenSSL,因为我们已经在服务器中使用 php 7.0.17 ,并且不知道何时升级。
一些第三方API(可能在 PHP 5.x 上托管并使用 mcrypt )正在获取加密数据。他们提供了用于加密/解密字符串的方法。
他们在这
$secret = 'a0a7e7997b6d5fcd55f4b5c32611b87c' ;
public function encrypt128($str)
{
$block = mcrypt_get_block_size("rijndael_128", "ecb");
$pad = $block - (strlen($str) % $block);
$str .= str_repeat(chr($pad), $pad);
return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $secret, $str, MCRYPT_MODE_ECB));
}
public function decrypt128($str)
{
$str = base64_decode($str);
$str = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $secret, $str, MCRYPT_MODE_ECB);
$len = strlen($str);
$pad = ord($str[$len - 1]);
return substr($str, 0, strlen($str) - $pad);
}
small1
如果已加密,则使用这些方法字符串v7IXp5vVaFVXXlt/MN8BVw==
我们想openssl_encrypt
在我们这边使用,如果我们使用OpenSSL加密相同的字符串,则它必须提供与Mcrypt相同的结果。我研究了使用
rijndael-128 Mode ecb的 mcrypt 应该与OpenSSL兼容aes-128-ecb
。
在过去的几个小时中,我一直在尝试使用OpenSSL建立自己的方法来加密提供相同结果的字符串。到目前为止,我来了
public function sslEncrypt128($str)
{
$secret = 'a0a7e7997b6d5fcd55f4b5c32611b87c';
return base64_encode(openssl_encrypt($str, 'aes-128-ecb', $secret, OPENSSL_RAW_DATA));
}
但是它会产生SxJ3+EdaeItZx3/EwGTUbw==
与上述输入相同的字符串。我不知道这是标志的问题还是填充的问题,任何指针都将受到欢迎。
我在这里添加了代码以在线测试https://3v4l.org/v2J2N
提前致谢。
在您的特定示例中,我发现通过更改aes-128-ecb
为aes-256-ecb
,它将产生与旧版相同的输出mcrypt_encrypt
。
由于Mcrypt已被弃用,我想在我的代码中使用OpenSSL,因为我们已经在服务器中使用了php7.0.17,并且不知道他们何时升级它。 一些第三方API(可能托管在PHP 5.x上并使用mcrypt)正在获取加密数据。他们提供了用于加密/解密字符串的方法。 他们在这里 使用这些方法string<code>small1</code>如果加密,则变为<code>v7IXp5vVaFVXlt/MN8B
我用Delphi加密“sifrelenecek”字符串,使用AES 128 ECB,使用密钥为“KRPTTT101103”,它给了我“FBE4A4405D6C1B54503D9B213E41AE56”,我正在检查http://aes.online-domain-tools.com/,它是正确的。我试图使用此功能创建相同的PHP加密; 但是php给我的结果是“wL2yf 72thixicjw0duQ
我不知道我做错了什么,在这里试图用给定的密钥解密一串十六进制值,使用ruby的OpenSSL密码AES-128-CTR。 我正在使用gem hex_字符串将我的十六进制转换为字节 我知道我遗漏了一些小东西,因为我有类似的代码实现AES-128-CBC。我是否需要一个计数器,为密文中128字节的每一块递增IV?
我用java编写了这段代码,以便解密密文。我有钥匙。对我来说,一切都是正确的,但我有我要解释的问题。 这是我的代码: 我收到以下错误: 出了什么问题?我知道这个问题在某种程度上与衬垫有关,但我不知道确切的解决方案。我只有一个密文IV和密钥。
Ruby代码是 然后 现在PHP代码是 然后我得到 密文和ruby的不一样。现在我尝试用PHP制作的密文解密ruby。 Ruby 'AES-128-CBC '和PHP 'rijndael-128 '加密有区别吗?还有我怎么用ruby解密?
关于AES有很多问题,但我有以下问题。我目前正在使用以下 AES 实现来加密数据 结果是32字节(256位)。所以我使用的是AES-256。这个实现对我来说太慢了。我如何切换到AES-128?我不需要任何填充或操作模式或密钥散列。 提前谢谢你。