我正在使用 MAMP 并且我安装了一个新版本的 Opencart,它告诉我我没有启用 MCrypt,当我进入终端并输入:
php -m | grep mcrypt
output: mcrypt
Run Code Online (Sandbox Code Playgroud)
我可以找到库,但它似乎没有启用。
这可能是一个不可能的问题,但我将遗留系统从Java迁移到PHP,我需要能够解密用PHP中的Jasypt加密的字符串.
根据文档,Jasypt使用以下算法:
遗留应用程序使用PBEWithMD5AndDESJasypt算法.我完全清楚MD5不是为解密而设计的,这不是我想要做的.
我只想对字符串进行DES解密,这样我剩下的就是MD5哈希.我似乎无法获得除PHP之外的二进制垃圾.我错过了什么?
<?php
#jasypt.algorithm=PBEWithMD5AndDES
$secret = 'secret-password';
$encrypted = 'xh/roK2diJPDfZGlT9DlwuG2TsS7t7F+';
$cipher = MCRYPT_DES;
$modes = array(
'ecb' => MCRYPT_MODE_ECB,
'cbc' => MCRYPT_MODE_CBC,
'cfb' => MCRYPT_MODE_CFB,
'ofb' => MCRYPT_MODE_OFB,
'nofb' => MCRYPT_MODE_NOFB,
'stream' => MCRYPT_MODE_STREAM,
);
foreach($modes as $mode => $mc) {
$iv_len = 0; //mcrypt_get_iv_size($cipher, $mode);
$password = base64_decode($encrypted);
$salt = substr($password, 0, $iv_len);
$data = substr($password, $iv_len);
for($i = 0; $i < 1000; $i++) {
$data = @mcrypt_decrypt($cipher, $secret, $data, …Run Code Online (Sandbox Code Playgroud) 我已经登录并注册了页面.但是我的密码还没有加密.人们告诉我这是一个坏主意,我应该加密他们.所以我一直在搜索如何加密和解密我的密码.我找到了一个关于如何加密我的密码的例子,但我不知道如何为我的登录页面再次解密它.这是我的加密代码:
$key = "some random security key";
$input = $password;
$td = mcrypt_module_open('tripledes', '', 'ecb', '');
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
mcrypt_generic_init($td, $key, $iv);
$password = mcrypt_generic($td, $input);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:有人能告诉我需要解密我从上面的代码中得到的字符串的代码.
嗨我有一个"/",编码后,%2F.问题是,当我将其添加为URL的一部分并打开时,抛出404,因为存在/之间.所以我的问题是在PHP中有什么方法我们可以1.加密并获得一个永远不会给出任何特殊字符的字符串2.将盐传递给加密.
顺便说一下我的加密方法:
$string='16';
$key='ec5dc8c8'
$cipher_alg = MCRYPT_TRIPLEDES;
$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher_alg,MCRYPT_MODE_ECB), MCRYPT_RAND);
$encrypted_string = mcrypt_encrypt($cipher_alg, $key, $string, MCRYPT_MODE_ECB, $iv);
return base64_encode($encrypted_string);
Run Code Online (Sandbox Code Playgroud)
注意:当我使用这个特殊的字符串和键集时,我可以生成一个字符串来解决这个问题.
我正在尝试使用phpunitLaravel 4,但我有Mcrypt问题.
在vendor/laravel/framework/src/Illuminate/Foundation/start.php第29行,Laravel检查是否mcrypt已启用.
if ( ! extension_loaded('mcrypt'))
{
die('Laravel requires the Mcrypt PHP extension.'.PHP_EOL);
exit(1);
}
Run Code Online (Sandbox Code Playgroud)
当我phpunit在CLI时,它说;
Laravel requires the Mcrypt PHP extension.
Run Code Online (Sandbox Code Playgroud)
这是不可能的,因为以下命令显示一切正常.
$ php -v
PHP 5.4.4 (cli)
$ php --ini
Loaded Configuration File: /Applications/MAMP/bin/php/php5.4.4/conf/php.ini
$ php -i | grep "mcrypt support"
mcrypt support => enabled
Run Code Online (Sandbox Code Playgroud)
但是......当我添加以下代码vendor/laravel/framework/src/Illuminate/Foundation/start.php以查看使用的是哪个PHP版本时,将显示CLI5.3.15
die(phpversion().PHP_EOL);
Run Code Online (Sandbox Code Playgroud)
我不知道这怎么可能.
添加上面的代码后; php artisan显示5.4.4但phpunit显示5.3.15.这几乎是不可能的,因为两者都vendor/laravel/framework/src/Illuminate/Foundation/start.php用来检查是否启用了Mcrypt.
我不确定Laravel在testing环境中会改变什么吗?
即时尝试使用xampp服务器在我的mac mavericks os上安装laravel 4.我解决了几个问题,但不能解决这个问题:
警告:PHP启动:mcrypt:无法初始化使用模块API编译的模块模块= 20100525使用模块API编译的PHP = 20121212这些选项需要在第0行的未知中匹配
我解决了这个问题,但我不知道如何解决它.非常感谢 !
我对使用php的mcrypt的AES-128和AES-512的区别感到困惑.差异只是密钥的长度(32和64个字符)或差异是使用的算法,如MCRYPT_RIJNDAEL_128?如果差异是后者,那么AES-512的算法应该如何呢?
当我将这些东西添加到我的mysql数据库时,我想加密我的php文件中的一些数据.
我就是这样做的.
我创建一个静态键,如:
$key = md5("uJHyFVSG");
Run Code Online (Sandbox Code Playgroud)
然后我有两个函数,名为encrypt()和decrypt(),他们这样做:
function encrypt($string, $key){
$string = rtrim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $string, MCRYPT_MODE_ECB)));
return $string;
}
function decrypt($string, $key){
$string = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, base64_decode($string), MCRYPT_MODE_ECB));
return $string;
}
Run Code Online (Sandbox Code Playgroud)
我不确定这是否是最佳做法,但是我如何生成除md5以外的密钥?
我正在尝试使用 加密密码mcrypt_encrypt()。它在 上工作正常localhost,但是当进入在线状态时,我的输出是""并且我收到此警告:
警告:mcrypt_encrypt():此算法不支持大小为 10 的密钥。仅支持尺寸为 16、24 或 32 的密钥
这是我正在使用的代码:
$text="thisismypassword123";
$salt="1234567824";
return trim (
base64_encode (
mcrypt_encrypt (
MCRYPT_RIJNDAEL_256, $salt, $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 encryption mcrypt encryption-symmetric password-encryption
我尝试遵循: PHP警告:PHP启动:无法加载动态库'mcrypt.so'
sudo apt-get -y install gcc make autoconf libc-dev pkg-config
sudo apt-get -y install php7.2-dev
sudo apt-get -y install libmcrypt-dev
sudo pecl install mcrypt-1.0.1
Run Code Online (Sandbox Code Playgroud)
我得到:
pecl/mcrypt requires PHP (version >= 7.2.0, version <= 7.3.0, excluded versions: 7.3.0), installed version is 7.3.3-1+ubuntu14.04.1+deb.sury.org+1
No valid packages found
install failed
Run Code Online (Sandbox Code Playgroud)
我使用需要的prestashop
我在php中使用crypt函数加密了用户名和密码.如何解密该用户名和密码?
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$key = "This is a very secret key";
$text = "Welcome to the system.";
echo strlen($text) . "\n";
Run Code Online (Sandbox Code Playgroud)
这不会打印任何东西.我究竟做错了什么?
我在哪里可以下载以及如何在 Windows 10 / 64 位下为 php 7.1 (TS,VC14) 安装 mcrypt 扩展。我需要它用于 akeneo 项目,并且它具有使用 mcrypt(而不是其他扩展)的依赖项。
我还没有找到合适的扩展 dll。感谢帮助。