标签: mcrypt

在PHP中使用AES加密时,应该在哪里存储密钥?

我正在我的网络应用程序中实现AES-256位加密:

http://www.utoxin.name/2009/07/automatic-db-field-encryption-in-cakephp/

其中一个步骤是存储使用的密码并键入boostrap文件.但是什么阻止某人用PS或其他东西扫描文件系统并解密数据呢?

保护数据的最佳方法是什么?

php cakephp aes mcrypt

2
推荐指数
1
解决办法
1765
查看次数

什么是,如果有的话,首选加密/解密php对象或数组的mcrypt密码

我会保持简短.作为PHP的mcrypt库的一部分,有大约40种可能的密码,请参见此处.

我自己对加密知之甚少,无论使用何种密码,我都在假设工作,解密时的数据与加密的数据相同(否则有什么意义呢?)

我需要加密然后解密数组或序列化标准对象.我在网上浏览了几个mcrypt库的基本实现示例,并注意到每个示例都使用了不同的密码.它让我想知道这是否有任何意义,或仅仅是个人偏好?

我的问题是,这些密码之间是否存在重大差异,我应该关注这些密码

  • 我将加密/解密是一个数组或序列化的标准对象,并包含相对较少的数据.
  • 这种操作相当罕见,因此速度不是一个大问题,在<2s范围内的任何地方都是可以接受的.
  • 加密的字符串需要存储在cookie中并通过url查询字符串传输(因此对长度和字符集有限制)

注意

我不是在讨论是否应该使用哈希或者hmac.加密是必要的,也是此问题的正确选项.

php encryption mcrypt

2
推荐指数
1
解决办法
2115
查看次数

Crypto ++到PHP mcrypt无法正常工作

我有一个C++应用程序,它使用Crypto ++将加密数据发送到PHP站点.但是,当数据进入PHP端时,它不会正确解密数据.

C++/Crypto ++代码:

char stupidKey[AES::MAX_KEYLENGTH] = "thisisastupidkeythisisastupidke";

ECB_Mode<AES>::Encryption aes((byte *)stupidKey, AES::MAX_KEYLENGTH);

std::string cypher;
StringSource(aData, true, new StreamTransformationFilter(aes, new StringSink( cypher ))); 
StringSource(cypher, true, new Base64Encoder( new StringSink(aOutput) ));
Run Code Online (Sandbox Code Playgroud)

PHP代码:

define('CRYPT_SECRET', 'thisisastupidkeythisisastupidke');

$postData = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, 
                CRYPT_SECRET, base64_decode($_POST['request']), 
                MCRYPT_MODE_ECB);
Run Code Online (Sandbox Code Playgroud)

注意:我知道ECB是加密模式的一个不好的选择,但是我希望能够在没有IV的额外奇怪之处的情况下使用它,然后使事情复杂化.

php c++ mcrypt crypto++

2
推荐指数
2
解决办法
4442
查看次数

在Ruby中解密PHP MCRYPT_RIJNDAEL_256

我有一个充满加密密码的数据库,我需要在Ruby中解密该密码才能更改平台。如何将该PHP代码移植到Ruby?曾尝试在具有AES_256的Ruby中使用OpenSSL,但收到“错误解密”错误,以及我的密钥($ salt)不够长的错误。

在下面的示例中,$ salt是25个字符串。

这是PHP解密功能:

function decrypt_password($text, $salt)
{
    return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256,
        $salt, base64_decode($text), MCRYPT_MODE_ECB, 
        mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB),
        MCRYPT_RAND)));
}
Run Code Online (Sandbox Code Playgroud)

php ruby encryption ruby-on-rails mcrypt

2
推荐指数
1
解决办法
970
查看次数

PHP使用mcrypt并将加密存储在MySQL中

我正在使用Mcrypt来加密一些字符串.

之后我将它们存储在我的数据库中,但在我的数据库中它看起来像"?? f ?? R ????? h $",因为许多特殊的字符被'?'取代.

我是否必须使用特殊的字符集或是否有另一种简单的方法?

此致,Cr41s3

php mysql mcrypt

2
推荐指数
1
解决办法
4387
查看次数

Mac Mini中的Laravel安装错误

我正在尝试在我的Mac Mini中安装Laravel并且一直在收到错误.

错误:

Writing lock file
Generating autoload files
Mcrypt PHP extension required.
Script php artisan clear-compiled handling the post-install-cmd event returned with an error



[RuntimeException]  
Error Output:       



create-project [-s|--stability="..."] [--prefer-source] [--prefer-dist] [--repository-url="..."] [--dev] [--no-dev] [--no-plugins] [--no-custom-installers] [--no-scripts] [--no-progress] [--keep-vcs] [--no-install] [--ignore-platform-reqs] [package] [directory] [version]
Run Code Online (Sandbox Code Playgroud)

一个月前我安装了Laravel 4.2,运行良好.但是现在当我安装新的Larvel 4.2时,它给出了上面给出的错误.

我使用内置的PHP,mySql,phpMyAdmin.(不是MAMP或XAMP)

我已经安装了mcrypt扩展.

php mcrypt laravel laravel-4

2
推荐指数
1
解决办法
117
查看次数

使用openssl解密mcrypt

由于mcrypt被认为是过时的,我的任务是升级当前代码以使用openssl.听起来很简单,但......经过几天的尝试和失败后,我觉得自己很疯狂.

我的问题是:你有什么方法可以用之前用mcrypt加密的openssl数据解密吗?我已经阅读了很多这方面的帖子,大多数人都说在运行mcrypt之前需要先前手动填充数据.问题是mcrypt-ed数据已经加密(使用mcrypt提供的自动空填充)并驻留在数据库中,因此无法和/或期望对其进行修改.

提及:

  1. 使用的算法是rijndael-128 cbc,带有32字节密钥(所以我使用aes-256-cbc表示openssl).
  2. 我正在使用php(php-crypto)的openssl包装器.
  3. 我已经设法使逆操作工作(用mcrypt解码openssl),只需剥离最终解码的字符(如果它们是非字母数字).
  4. 在mcrypting之前手动填充数据然后使用openssl解密它就像魅力一样,但这不是问题所在.

一些代码片段:

// Simple mcrypt encrypt, decrypt with php-crypto example
// This doesn't work and produces a "Finalizing of cipher failed" error
        $data = "This is a text";
        $strMcryptData=mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, $iv);

        $algorithm = 'aes-256-cbc';
        $cipher = new Cipher($algorithm);
        $sim_text = $cipher->decrypt($strMcryptData, $key, $iv);

// Simple mcrypt encrypt with padding, decrypt with php-crypto
// Works and produces the correct text on decryption
        $pad =  $blocksize - (strlen($data) % $blocksize);
        $text = $data; …
Run Code Online (Sandbox Code Playgroud)

php encryption openssl cryptography mcrypt

2
推荐指数
2
解决办法
4778
查看次数

mcrypt_decrypt,openssl_decrypt和0x06065064 EVP_DecryptFinal错误

我的openssl_decrypt功能有问题。

示例代码:

// mcrypt
$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, $iv);

// OpenSSL
$decrypted = openssl_decrypt($data, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);
Run Code Online (Sandbox Code Playgroud)

mcrypt_decrypt功能工作正常。但是openssl_decrypt返回FALSE并出现以下错误:

错误:06065064:数字信封例程:EVP_DecryptFinal_ex:错误解密

密钥的长度为32个字节,iv的长度为16个字节。

有人知道怎么了吗?

php openssl mcrypt

2
推荐指数
1
解决办法
974
查看次数

找不到PHP 7.1.9 mcrypt库

我已经在Windows Server 2012机器上安装了Php 7.1.9,如果我查看php信息我可以看到mcrypt已启用但是如果我输入shell php -v我有这个错误:

Unable to load dynamic library 'C:/php/ext\php_mcrypt.dll' - The specified module could not be found.
Run Code Online (Sandbox Code Playgroud)

实际上运行Laravel应用程序我也得到一些与之相关的异常.

我检查了ext文件夹,没有php_mcrypt.dll.

php mcrypt

2
推荐指数
1
解决办法
1832
查看次数

php:5-apache mcrypt.h 未找到

我在一些旧项目(Laravel 4.2)上工作,它使用mcryptphp5 并想在docker上运行它。这是我的dockerfile

FROM php:5-apache

COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

RUN apt-get update &&\
    apt-get install -y \
    git \
    libpng-dev \
    zlib1g-dev \
    zip \
    unzip &&\
    a2enmod rewrite

RUN docker-php-ext-install pdo 
RUN docker-php-ext-install pdo_mysql 
RUN docker-php-ext-install zip
RUN docker-php-ext-install gd 
RUN docker-php-ext-install pcntl  
RUN docker-php-ext-install mcrypt  
Run Code Online (Sandbox Code Playgroud)

运行后我收到消息:

配置:错误:未找到 mcrypt.h。请重新安装 libmcrypt。

我尝试在上面的文件中添加libmcryptapt-get install但我得到:

E: 无法定位软件包 libmcrypt

以类似的方式我尝试添加php5-mcrypt但我得到:

E: 包 'php5-mcrypt' 没有安装候选

如果我使用(并与上面结合)FROM php:5-apache-jessieRUN rm /etc/apt/preferences.d/no-debian-phpRUN …

mcrypt docker php-5.6

2
推荐指数
1
解决办法
2652
查看次数