mcrypt DES-ECB 转 openssl
时间: 2023-07-05 07:20:48 浏览: 46
要将使用 mcrypt 库进行的 DES-ECB 加密/解密转换为 OpenSSL 库,可以使用以下代码示例:
```php
$key = 'my_secret_key';
$text = 'Hello, world!';
// Encrypt using mcrypt
$encrypted = mcrypt_encrypt(MCRYPT_DES, $key, $text, MCRYPT_MODE_ECB);
// Decrypt using openssl
$decrypted = openssl_decrypt($encrypted, 'DES-ECB', $key);
echo $decrypted; // Output: Hello, world!
```
在这个示例中,我们首先使用 `mcrypt_encrypt` 函数使用 DES-ECB 加密算法加密原始文本。然后,我们使用 `openssl_decrypt` 函数解密加密后的文本,该函数使用相同的密钥和加密算法来解密数据。最后,我们输出解密后的文本,应该与原始文本相同。
相关问题
$td = mcrypt_module_open('des', '', 'ecb', ''); $iv = @mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND); 转成openssl的$iv
在 OpenSSL 中,可以使用 `openssl_random_pseudo_bytes()` 函数生成初始向量(IV),来替代 `mcrypt_create_iv()` 函数。同时,需要注意的是,OpenSSL 中的加密算法名称与 mcrypt 不同,需要进行转换。
对于 `mcrypt_module_open('des', '', 'ecb', '')` 这一行代码,可以转换为以下 OpenSSL 代码:
```php
$cipher = 'des-ecb';
$key = 'your_key';
// 创建 OpenSSL 加密上下文
$ctx = openssl_cipher_init($cipher, null, $key, OPENSSL_RAW_DATA);
// 生成初始向量
$ivlen = openssl_cipher_iv_length($cipher); // 获取 IV 长度
$iv = openssl_random_pseudo_bytes($ivlen); // 生成 IV
// 加密
$encrypted = openssl_encrypt($data, $cipher, $key, OPENSSL_RAW_DATA, $iv);
```
在这个示例中,首先定义了加密算法名称和密钥。然后使用 `openssl_cipher_init()` 函数创建 OpenSSL 加密上下文,其中第一个参数为加密算法名称,第二个参数为加密选项(这里为 null),第三个参数为密钥。接着,使用 `openssl_cipher_iv_length()` 函数获取 IV 长度,使用 `openssl_random_pseudo_bytes()` 函数生成随机初始向量。最后,使用 `openssl_encrypt()` 函数进行加密。
需要注意的是,OpenSSL 中的加密算法名称与 mcrypt 不同。例如,mcrypt 中的 DES-ECB 加密算法在 OpenSSL 中对应的名称为 des-ecb。因此,需要根据实际情况进行转换。
php:5.6-fpm-alpine 安装 mysql mysqli openssl mcrypt 扩展
在使用 `php:5.6-fpm-alpine` 镜像时,可以通过以下步骤安装 `mysql`、`mysqli`、`openssl` 和 `mcrypt` 扩展:
1. 进入容器内部
```bash
docker exec -it <容器ID> /bin/sh
```
2. 更新镜像源
```bash
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
```
3. 安装扩展所需的依赖包
```bash
apk add --no-cache mysql-client mysql-dev openssl-dev libmcrypt-dev gcc make autoconf libc-dev
```
4. 安装扩展
```bash
docker-php-ext-install mysqli pdo_mysql openssl mcrypt
```
5. 重启 `php-fpm` 服务
```bash
service php-fpm restart
```
完成以上步骤后,即可在 `php:5.6-fpm-alpine` 镜像中使用 `mysql`、`mysqli`、`openssl` 和 `mcrypt` 扩展。