我有一个使用mcrypt_decrypt()函数的脚本,但是我收到以下错误
致命错误:调用未定义的函数mcrypt_decrypt()
我需要包含哪些模块/库才能使用此功能?还是有另一个原因我收到错误?
谢谢
我正在开发一个PHP应用程序来管理公司的订单.要查看URL当前的订单/orders/view/3502.
我不希望订单ID号出现在URL中,因此我使用CodeIgniter的加密库来加密URL中的ID.URL(加密后)看起来像/orders/view/AaffGdQQ.
我遇到的问题有时加密ID包含正斜杠或加号,在URL中无法正常工作.CodeIgniter基于斜杠读取URL,因此,如果加密的ID有斜杠,它将读取为2个变量,而不是一个.此外,加号会被解释为URL中的空格.
所以,我的问题是,如何加密ID并确保字符串不包含加号或斜杠?
编辑:我有一个想法,看看加密的ID是否包含斜杠或加号,如果是,则再次加密.出于某种原因,每次ID被加密时,它都是不同的,所以这会起作用.
我已经看过几次了,但不知道我将如何在这里问它...希望你们好.
基本上我有这个脚本工作正常,将毫不费力地打印我的结果:
$algorithm = MCRYPT_BLOWFISH;
$mode = MCRYPT_MODE_CFB;
$iv = mcrypt_create_iv(mcrypt_get_iv_size($algorithm, $mode), MCRYPT_DEV_URANDOM);
$key = 'Wassup';
$data = 'I am a guy';
$enc_data = rtrim(mcrypt_encrypt($algorithm,$key,$data,$mode,$iv));
$plain_text = base64_encode($enc_data);
echo $plain_text . "\n";
// OUTPUTS: 6m3D5qSrfz3w6pKuuybs
$enc_data = base64_decode($plain_text);
$decoded = mcrypt_decrypt($algorithm,$key,$enc_data,$mode,$iv);
echo $decoded;
// OUTPUTS: I am a guy
Run Code Online (Sandbox Code Playgroud)
太棒了.现在......而不是只是立即输出我输入的内容,我试图将该信息存储在我的数据库中以便稍后解密.
我可以在表格行中看到加密的字符串:6m3D5qSrfz3w6pKuuybs.所以,我相信它会很好......
当我查询它出来时它看起来是一样的,但现在当我解码和解密时我会得到类似的东西:ÝÄ/ $ÍñËt05883700
表字段设置为VARCHAR(255)utf8_general_ci.这是问题所在吗?
我在PHP应用程序中工作,我们有一个特定的字符串,我们需要在存储到数据库之前加密.我可以在PHP中使用带有密钥和iv的mcrypt没有问题.目前我正在尝试使用blowfish因为我认为在ColdFusion中解密它会是最灵活的.我遇到的问题是看起来ColdFusion似乎不想使用密钥或iv加密.ColdFusion希望你使用generateSecretKey()并使用其他方法来创建iv.
我似乎无法做的是让两人沟通.我首先尝试在coldFusion中加密并使用它生成的密钥,然后在PHP中使用它,但结果并非如此.我知道我必须遗漏一些东西,但我无法确定它可能是什么.
<?php
$securedString = mcrypt_encrypt ('MCRYPT_BLOWFISH' , 'THISISMYKEYTHATISVERYLONG32CHARS' , "This is the string I need encrypted' , MCRYPT_MODE_CBC , '12345678');
echo base64_encode($securedString);
?>
Run Code Online (Sandbox Code Playgroud)
那么等效的ColdFusion解密调用会是什么样的呢?
顺便说一句:如果Blowfish不是理想的算法,只要ColdFusion和PHP都可以使用它并且它是安全的,请随意建议另一个.
谢谢,布鲁斯
我使用Apache 2.2.16在Windows机器上安装了PHP 5.2.14(通过.msi安装).安装附带了ext/php_mcrypt.dll和libmcrypt.dll但是当我在php.ini中取消注释extension = php_mcrypt.dll并重启Apache时它没有启用.phpinfo()没有显示任何内容.我错过了什么?
更新:
我查看了我的错误日志,它向我吐出:
PHP警告:PHP启动:无法加载动态库'C:\ PHP5\ext\php_mcrypt.dll' - 找不到指定的模块.\ r \n在第0行的未知中
我读了一下这个,我没有任何php dll存储在windows32 /文件夹中,所以我很困惑.
我在我的新电脑上安装了laravel,我收到了这个错误:
ErrorException mcrypt_get_iv_size():模块初始化失败
我从旧电脑上复制了这个项目.安装并启用了mcrypt,其他不使用laravel的页面正在运行.我正在运行ubuntu 14.04
我创建了一个新的laravel项目(使用laravel new命令),当我尝试访问时,我得到:
"哎呀,看起来像出事了."
我打开日志,错误是:
production.ERROR:带有'mcrypt_get_iv_size()消息的异常'ErrorException':模块初始化失败
有任何想法吗?
将"Yosemite"更新为"El Capitan"后,我遇到了mcrypt扩展问题.
致命错误:在第68行的/Users/Pilipe/Sites/prestashop-test/classes/Rijndael.php中调用未定义的函数mcrypt_decrypt()
在我的php.ini中,我添加了这一行:
扩展= "/ USR /本地/地窖/ php56-mcrypt的/ 5.6.13/mcrypt.so"
当我启动此命令行时:
php -i | grep'mcrypt'
我有 :
已解析的其他.ini文件=> /usr/local/etc/php/5.6/conf.d/ext-mcrypt.ini已
注册的流过滤器=> zlib.,bzip2.,convert.iconv.,string.rot13,string.toupper,string.tolower,string.strip_tags,convert.消费,消遣,mcrypt.,mdecrypt.
PHP警告:未知:依赖系统的时区设置是不安全的.您需要使用date.timezone设置或date_default_timezone_set()函数.如果您使用了这些方法中的任何一种并且仍然收到此警告,则很可能拼错了时区标识符.我们现在选择了时区'UTC',但请设置date.timezone以选择您的时区.在第0行的未知中
mcrypt
mcrypt support => enabled
mcrypt_filter support => enabled
mcrypt.algorithms_dir => no value => no value
mcrypt.modes_dir => no value => no value
PWD => /usr/local/Cellar/php56-mcrypt/5.6.13
_SERVER ["PWD"] => /usr/local/Cellar/php56-mcrypt/5.6.13
命令php -v:
PHP 5.6.13(cli)(建于2015年10月2日23:07:16)
版权所有(c)1997-2015 PHP Group
Zend Engine v2.6.0,版权所有(c)1998-2015 Zend Technologies
我安装了mcrypt:
brew安装php56-mcrypt
我这样做了:
brew链接php56-mcrypt
为什么mcrypt它无法正常工作?
先感谢您.
真诚的菲利普.
我刚刚升级了我的MAMP服务器以运行7.1.0.我现在在Laravel 4.2安装中出现此错误;
Function mcrypt_get_iv_size() is deprecated
Run Code Online (Sandbox Code Playgroud)
我试过改变
'cipher' => MCRYPT_RIJNDAEL_128,
Run Code Online (Sandbox Code Playgroud)
至
'cipher' => 'AES-256-CBC',
Run Code Online (Sandbox Code Playgroud)
但无济于事.
有谁知道如何在Laravel 4.2中解决这个问题?
如评论中所述,不重复.
由于mcrypt在PHP 7.1中已弃用,并且我在现有项目中使用mcrypt加密/解密了很多数据,因此如何将我的PHP代码从mcrypt迁移到OpenSSL?我有以下代码要加密:
$encoded = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, 'salt', 'source string', MCRYPT_MODE_ECB));
Run Code Online (Sandbox Code Playgroud)
解密代码为:
$source = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, 'salt', base64_decode('encoded string'), MCRYPT_MODE_ECB);
Run Code Online (Sandbox Code Playgroud)
openssl_在不进行编码数据转换的情况下,以上示例中应使用哪些函数来获得相同的结果?
还是唯一的方法是运行一个脚本,该脚本将使用mcrypt解密所有存储的加密数据并使用openssl进行编码?
谢谢
我有一个Docker容器与Phalcon3和PHP 7.我试图安装PHP扩展Mcrypt没有运气.
如果我对容器执行ssh,并执行:
apt-get update
apt-get install php7.0-mcrypt
Run Code Online (Sandbox Code Playgroud)
我得到以下内容:
E: Unable to locate package php7.0-mcrypt
E: Couldn't find any package by regex 'php7.0-mcrypt'
Run Code Online (Sandbox Code Playgroud)
有没有办法安装它?
mcrypt ×10
php ×8
laravel ×2
apache ×1
codeigniter ×1
coldfusion ×1
coldfusion-8 ×1
docker ×1
laravel-4 ×1
mysql ×1
php-7.1 ×1
php-openssl ×1