


PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 的解决方法,mcryptmoduleopen_PHP教程
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 的解决方法,mcryptmoduleopen
我也是PHP新手,通过w3cschool了解了一下php基本原理之后就开写了。但仍是菜鸟。
先不管3DES加密的方法对不对,方法都是网上的,在运行的时候报了个错,把小弟整死了。找来找去终于自己摸出了方法。
<?<span>php </span><span>/*</span><span>* * * PHP版3DES加解密类 * * 可与java的3DES(DESede)加密方式兼容 * * @Author: Luo Hui (farmer.luo at gmail.com) * * @version: V0.1 2008.12.04 * </span><span>*/</span> <span>class</span><span> Crypt3Des { </span><span>public</span> <span>$key</span> = "01234567890123456789012345678912"<span>; </span><span>public</span> <span>$iv</span> = "23456789"; <span>//</span><span>like java: private static byte[] myIV = { 50, 51, 52, 53, 54, 55, 56, 57 }; //加密</span> <span>public</span> <span>function</span> encrypt(<span>$input</span><span>) { </span><span>$input</span> = <span>$this</span>->padding( <span>$input</span><span> ); </span><span>$key</span> = <span>base64_decode</span>(<span>$this</span>-><span>key</span><span>); </span><span>$td</span> = mcrypt_module_open( MCRYPT_3DES, '', MCRYPT_MODE_CBC, ''<span>); </span><span>//</span><span>使用MCRYPT_3DES算法,cbc模式</span> mcrypt_generic_init(<span>$td</span>, <span>$key</span>, <span>$this</span>-><span>iv); </span><span>//</span><span>初始处理</span> <span>$data</span> = mcrypt_generic(<span>$td</span>, <span>$input</span><span>); </span><span>//</span><span>加密</span> mcrypt_generic_deinit(<span>$td</span><span>); </span><span>//</span><span>结束</span> mcrypt_module_close(<span>$td</span><span>); </span><span>$data</span> = <span>$this</span>->removeBR(<span>base64_encode</span>(<span>$data</span><span>)); </span><span>return</span> <span>$data</span><span>; } </span><span>//</span><span>解密</span> <span>public</span> <span>function</span> decrypt(<span>$encrypted</span><span>) { </span><span>$encrypted</span> = <span>base64_decode</span>(<span>$encrypted</span><span>); </span><span>$key</span> = <span>base64_decode</span>(<span>$this</span>-><span>key</span><span>); </span><span>$td</span> = mcrypt_module_open( MCRYPT_3DES,'',MCRYPT_MODE_CBC,''<span>); </span><span>//</span><span>使用MCRYPT_3DES算法,cbc模式</span> mcrypt_generic_init(<span>$td</span>, <span>$key</span>, <span>$this</span>-><span>iv); </span><span>//</span><span>初始处理</span> <span>$decrypted</span> = mdecrypt_generic(<span>$td</span>, <span>$encrypted</span><span>); </span><span>//</span><span>解密</span> mcrypt_generic_deinit(<span>$td</span><span>); </span><span>//</span><span>结束</span> mcrypt_module_close(<span>$td</span><span>); </span><span>$decrypted</span> = <span>$this</span>->removePadding(<span>$decrypted</span><span>); </span><span>return</span> <span>$decrypted</span><span>; } </span><span>//</span><span>填充密码,填充至8的倍数</span> <span>public</span> <span>function</span> padding( <span>$str</span><span> ) { </span><span>$len</span> = 8 - <span>strlen</span>( <span>$str</span> ) % 8<span>; </span><span>for</span> ( <span>$i</span> = 0; <span>$i</span> < <span>$len</span>; <span>$i</span>++<span> ) { </span><span>$str</span> .= <span>chr</span>( 0<span> ); } </span><span>return</span> <span>$str</span><span> ; } </span><span>//</span><span>删除填充符</span> <span>public</span> <span>function</span> removePadding( <span>$str</span><span> ) { </span><span>$len</span> = <span>strlen</span>( <span>$str</span><span> ); </span><span>$newstr</span> = ""<span>; </span><span>$str</span> = <span>str_split</span>(<span>$str</span><span>); </span><span>for</span> (<span>$i</span> = 0; <span>$i</span> < <span>$len</span>; <span>$i</span>++<span> ) { </span><span>if</span> (<span>$str</span>[<span>$i</span>] != <span>chr</span>( 0<span> )) { </span><span>$newstr</span> .= <span>$str</span>[<span>$i</span><span>]; } } </span><span>return</span> <span>$newstr</span><span>; } </span><span>//</span><span>删除回车和换行</span> <span>public</span> <span>function</span> removeBR( <span>$str</span><span> ) { </span><span>$len</span> = <span>strlen</span>( <span>$str</span><span> ); </span><span>$newstr</span> = ""<span>; </span><span>$str</span> = <span>str_split</span>(<span>$str</span><span>); </span><span>for</span> (<span>$i</span> = 0; <span>$i</span> < <span>$len</span>; <span>$i</span>++<span> ) { </span><span>if</span> (<span>$str</span>[<span>$i</span>] != '\n' and <span>$str</span>[<span>$i</span>] != '\r'<span>) { </span><span>$newstr</span> .= <span>$str</span>[<span>$i</span><span>]; } } </span><span>return</span> <span>$newstr</span><span>; } } </span><span>//</span><span>test</span> <span>$input</span> = "1qaz2ws"<span>; </span><span>echo</span> "plainText:" . <span>$input</span>."<br/>"<span>; </span><span>$crypt</span> = <span>new</span><span> Crypt3Des(); </span><span>echo</span> "Encode:".<span>$crypt</span>->encrypt(<span>$input</span>)."<br/>"<span>; </span><span>echo</span> "Decode:".<span>$crypt</span>->decrypt(<span>$crypt</span>->encrypt(<span>$input</span><span>)); </span>?>
代码可以不看,就看里面的一句:$td = mcrypt_module_open( MCRYPT_3DES, '', MCRYPT_MODE_CBC, '');报错的就是他。
我搜寻了一大堆解决方法,正确的方法应该是(仅用于windows系统哦):
当运行php的服务器端缺少libmcrypt.dll时使用函数mcrypt_module_open进行解密会出现此错误。
在服务器上做如下设置可解决。
到网上下载一个php的mcrypt模块安装包,只需要libmcrypt.dll文件即可(一般官网上下载的,php目录下已经有的)
1.将libmcrypt.dll复制到system32目录或php安装目录下的extensions目录下
2.将libmcrypt.dll复制到apache安装目录的bin目录下
3.到windows目录下找到php.ini文件,打开它
4.找到; Directory in which the loadable extensions (modules) reside.
extension_dir = "./" 如:extension_dir = "D:\php5\ext"
这两行,要使extension_dir指向的目录下能找到libmcrypt.dll,或系统path下有libmcrypt.dll
5.找到;Windows Extensions 项下面的;extension=php_mcrypt.dll这一行和;extension=php_iconv.dll(我的没有,省略了)这两行,去掉前面的分号
ps:刚开始看网上的解决方法,有的说修改php安装目录下的php.ini,但是修改后是没用的。一定要修改windows目录下的php.ini!

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

PHP可以轻松创建互动网页内容。1)通过嵌入HTML动态生成内容,根据用户输入或数据库数据实时展示。2)处理表单提交并生成动态输出,确保使用htmlspecialchars防XSS。3)结合MySQL创建用户注册系统,使用password_hash和预处理语句增强安全性。掌握这些技巧将提升Web开发效率。

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

PHP仍然具有活力,其在现代编程领域中依然占据重要地位。1)PHP的简单易学和强大社区支持使其在Web开发中广泛应用;2)其灵活性和稳定性使其在处理Web表单、数据库操作和文件处理等方面表现出色;3)PHP不断进化和优化,适用于初学者和经验丰富的开发者。

PHP在现代Web开发中仍然重要,尤其在内容管理和电子商务平台。1)PHP拥有丰富的生态系统和强大框架支持,如Laravel和Symfony。2)性能优化可通过OPcache和Nginx实现。3)PHP8.0引入JIT编译器,提升性能。4)云原生应用通过Docker和Kubernetes部署,提高灵活性和可扩展性。

PHP适合web开发,特别是在快速开发和处理动态内容方面表现出色,但不擅长数据科学和企业级应用。与Python相比,PHP在web开发中更具优势,但在数据科学领域不如Python;与Java相比,PHP在企业级应用中表现较差,但在web开发中更灵活;与JavaScript相比,PHP在后端开发中更简洁,但在前端开发中不如JavaScript。

PHP和Python各有优势,适合不同场景。1.PHP适用于web开发,提供内置web服务器和丰富函数库。2.Python适合数据科学和机器学习,语法简洁且有强大标准库。选择时应根据项目需求决定。

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

Atom编辑器mac版下载
最流行的的开源编辑器

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)