我正在我的网络应用程序中实现AES-256位加密:
http://www.utoxin.name/2009/07/automatic-db-field-encryption-in-cakephp/
其中一个步骤是存储使用的密码并键入boostrap文件.但是什么阻止某人用PS或其他东西扫描文件系统并解密数据呢?
保护数据的最佳方法是什么?
我会保持简短.作为PHP的mcrypt库的一部分,有大约40种可能的密码,请参见此处.
我自己对加密知之甚少,无论使用何种密码,我都在假设工作,解密时的数据与加密的数据相同(否则有什么意义呢?)
我需要加密然后解密数组或序列化标准对象.我在网上浏览了几个mcrypt库的基本实现示例,并注意到每个示例都使用了不同的密码.它让我想知道这是否有任何意义,或仅仅是个人偏好?
我的问题是,这些密码之间是否存在重大差异,我应该关注这些密码
注意
我不是在讨论是否应该使用哈希或者hmac.加密是必要的,也是此问题的正确选项.
我有一个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的额外奇怪之处的情况下使用它,然后使事情复杂化.
我有一个充满加密密码的数据库,我需要在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) 我正在使用Mcrypt来加密一些字符串.
之后我将它们存储在我的数据库中,但在我的数据库中它看起来像"?? f ?? R ????? h $",因为许多特殊的字符被'?'取代.
我是否必须使用特殊的字符集或是否有另一种简单的方法?
此致,Cr41s3
我正在尝试在我的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扩展.
由于mcrypt被认为是过时的,我的任务是升级当前代码以使用openssl.听起来很简单,但......经过几天的尝试和失败后,我觉得自己很疯狂.
我的问题是:你有什么方法可以用之前用mcrypt加密的openssl数据解密吗?我已经阅读了很多这方面的帖子,大多数人都说在运行mcrypt之前需要先前手动填充数据.问题是mcrypt-ed数据已经加密(使用mcrypt提供的自动空填充)并驻留在数据库中,因此无法和/或期望对其进行修改.
提及:
一些代码片段:
// 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) 我的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个字节。
有人知道怎么了吗?
我已经在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.
我在一些旧项目(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。
我尝试在上面的文件中添加libmcrypt,apt-get install但我得到:
E: 无法定位软件包 libmcrypt
以类似的方式我尝试添加php5-mcrypt但我得到:
E: 包 'php5-mcrypt' 没有安装候选
如果我使用(并与上面结合)FROM php:5-apache-jessie并RUN rm /etc/apt/preferences.d/no-debian-php在RUN …