标签: mcrypt

PHP:Mcrypt - 哪种模式?

我一直在测试PHP 功能中可用的各种模式mcrypt.ECB 是大多数教程中使用的模式,但是刚刚链接的页面和一些用户都不推荐使用,因此我认为CBCCFB都应该这样做.

PHP的文档并不是太多,因为它可以比较不同的模式mcrypt,而是指的是"Schneier的应用密码学"这本书,我现在不太热衷于购买.

那么mcrypt我想使用哪种模式?为什么?

php encryption mcrypt

17
推荐指数
1
解决办法
1万
查看次数

在OSX 10.8.2上安装mcrypt - 使用自制软件安装PHP 5.3.15

我已经成功安装了mcryptvia,homebrew但我很难找到将mcrypt.so其作为扩展包含在其中的路径php.ini.

mcrypt安装在/usr/local/Cellar/mcrypt/2.5.8.树:

-- AUTHORS
|-- ChangeLog
|-- INSTALL_RECEIPT.json
|-- NEWS
|-- README
|-- TODO
|-- bin
|   `-- libmcrypt-config
|-- include
|   |-- mcrypt.h
|   `-- mutils
|       `-- mcrypt.h
|-- lib
|   |-- libmcrypt.4.4.8.dylib
|   |-- libmcrypt.4.dylib -> libmcrypt.4.4.8.dylib
|   `-- libmcrypt.dylib -> libmcrypt.4.4.8.dylib
`-- share
    |-- aclocal
    |   `-- libmcrypt.m4
    `-- man
        `-- man3
            `-- mcrypt.3
Run Code Online (Sandbox Code Playgroud)

我想包括mcrypt.hphp.ini:

extension="/usr/local/Cellar/mcrypt/2.5.8/include/mcrypt.h"
Run Code Online (Sandbox Code Playgroud)

然后重新启动apache.但它不起作用.

当我在终端中运行php时,我得到:

PHP Warning:  PHP Startup: …
Run Code Online (Sandbox Code Playgroud)

php mcrypt

17
推荐指数
3
解决办法
3万
查看次数

Mac OS X上需要Mcrypt PHP扩展

我一直收到这个错误

需要Mcrypt PHP扩展

在我运行之后在底部composer update:

在此输入图像描述

由于我使用的是Mac,我尝试过运行:

brew search mcrypt brew install php56-mcrypt

我仍然得到相同的错误消息.

macos mamp mcrypt laravel laravel-4

17
推荐指数
4
解决办法
5万
查看次数

使用未定义的常量MCRYPT_BLOWFISH

重新安装我们的服务器后,MCRYPT不再工作,PHP发出通知

使用未定义的常量MCRYPT_BLOWFISH(Apache 2.4,PHP 5.5).

php -m返回mcrypt.

ls -al /etc/php5/apache2/conf.d/
20-mcrypt.ini -> ../../mods-available/mcrypt.ini

cat /etc/php5/mods-available/mcrypt.ini
; configuration for php MCrypt module
extension=mcrypt.so
Run Code Online (Sandbox Code Playgroud)

为什么mcrypt不被认可?我怎样才能做到这一点?

php apache mcrypt

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

PHP7.1 mcrypt替代方案

从PHP 7.1.0开始,Mcrypt函数已被弃用.

我弃用的字符串编码/解码函数:

$key: secret key
$str: string


$encoded = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $str, MCRYPT_MODE_CBC, md5(md5($key))));

$decoded = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($str), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
Run Code Online (Sandbox Code Playgroud)

你能提出一些替代方案吗?

php encoding decode mcrypt php-7.1

15
推荐指数
1
解决办法
4万
查看次数

mcrypt安装的问题

我已经要求系统管理员在服务器上安装mcrypt,他们说一切正常.但是当我运行我的简单脚本时,我得到了这个.

警告:mcrypt_get_iv_size()[function.mcrypt-get-iv-size]:模块初始化失败

它来自这条线:

$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256,MCRYPT_MODE_ECB);
Run Code Online (Sandbox Code Playgroud)

现在,从这段代码:

$algorithms = mcrypt_list_algorithms("/usr/local/bin/mcrypt");

foreach ($algorithms as $cipher) {
    echo "$cipher<br />\n";
} 
Run Code Online (Sandbox Code Playgroud)

我明白了:

警告:mcrypt_list_algorithms()[function.mcrypt-list-algorithms]:在模块目录中找不到算法

当我运行这个:

$modes = mcrypt_list_modes("/usr/local/bin/mcrypt");

foreach ($modes as $mode) {
    echo "$mode <br />\n";
}
Run Code Online (Sandbox Code Playgroud)

我明白了:

警告:mcrypt_list_modes()[function.mcrypt-list-modes]:在模块目录中找不到模式

但是,运行此命令时此命令

which mcrypt; mcrypt -v
Run Code Online (Sandbox Code Playgroud)

生产:

/usr/local/bin/mcrypt
Mcrypt v.0.9.9 (x86_64-unknown-linux-gnu)
Linked against libmcrypt v.2.5.7
Copyright (C) 1998-2002 Nikos Mavroyanopoulos (nmav@gnutls.org)
Run Code Online (Sandbox Code Playgroud)

是否已正确安装/配置mcrypt

更新:

我这样做了:

whereis libmcrypt
Run Code Online (Sandbox Code Playgroud)

......得到了结果:

libmcrypt: /usr/local/lib/libmcrypt /usr/local/lib/libmcrypt.so /usr/local/lib/libmcrypt.la
Run Code Online (Sandbox Code Playgroud)

我也改变了:

$modes = mcrypt_list_modes("/usr/local/bin/mcrypt");
Run Code Online (Sandbox Code Playgroud)

至...

$modes = mcrypt_list_modes("/usr/local/lib/libmcrypt");
$algorithms …
Run Code Online (Sandbox Code Playgroud)

php centos mcrypt

14
推荐指数
3
解决办法
3万
查看次数

MCrypt rijndael-128到OpenSSL aes-128-ecb转换

由于Mcrypt已被弃用,我想在我的代码中使用OpenSSL,因为我们已经在我们的服务器中使用了PHP 7.0.17并且没有告诉他们何时升级它.

某些第三方API(可能在PHP 5.x上托管并使用mcrypt)正在使用加密数据.他们提供了用于加密/解密字符串的方法.

他们是这样的

$secret = 'a0a7e7997b6d5fcd55f4b5c32611b87c' ;

public function encrypt128($str)
    {
        $block = mcrypt_get_block_size("rijndael_128", "ecb");
        $pad   = $block - (strlen($str) % $block);
        $str .= str_repeat(chr($pad), $pad);

        return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $secret, $str, MCRYPT_MODE_ECB));
    }

public function decrypt128($str)
    {
        $str = base64_decode($str);
        $str = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $secret, $str, MCRYPT_MODE_ECB);

        $len = strlen($str);
        $pad = ord($str[$len - 1]);

        return substr($str, 0, strlen($str) - $pad);
    }
Run Code Online (Sandbox Code Playgroud)

small1如果加密,使用这些方法字符串v7IXp5vVaFVXXlt/MN8BVw==


我们希望openssl_encrypt在我们这边使用,如果我们用OpenSSL加密相同的字符串,它必须给出与Mcrypt相同的结果.我研究过使用rijndael-128模式的mcrypt ecb应该与OpenSSL兼容aes-128-ecb. …

php encryption cryptography mcrypt php-openssl

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

如何在armv7架构中构建mcrypt库?

我正在使用PJSIP开源库进行AES加密.用于AES加密的库不是C编程中可用的内置库.所以,我已经使用外部库(Libmcrypt)进行AES加密.

我按照这个站点将libmcrypt库构建到我的机器(MAC OSX)中. https://coolestguidesontheplanet.com/install-mcrypt-php-mac-osx-10-10-yosemite-development-server/

https://gist.github.com/bricef/2436364

在构建这些库时,它在/ usr/local/lib / path中创建了一个动态库(libmcrypt.dylib).当使用lipo -info libmcrypt.dylib命令检查该库的体系结构时,它显示

Non-fat file: libmcrypt.dylib is architecture: x86_64
Run Code Online (Sandbox Code Playgroud)

但我正在使用PJSIP 为AndroidIOS设备创建这些应用程序.他们的架构是armeabi(android)和armv7(IOS).

将libmcrypt.dylib(x86_64)链接到PJSIP库(armv7)时,会显示以下错误.

Undefined symbols for architecture armv7:
  "_mcrypt_enc_get_block_size", referenced from:
      _encrypt_AES in libpjsip-armv7-apple-darwin_ios.a(aes.o)
      _decrypt_AES in libpjsip-armv7-apple-darwin_ios.a(aes.o)
  "_mcrypt_generic", referenced from:
      _encrypt_AES in libpjsip-armv7-apple-darwin_ios.a(aes.o)
  "_mcrypt_generic_deinit", referenced from:
      _encrypt_AES in libpjsip-armv7-apple-darwin_ios.a(aes.o)
      _decrypt_AES in libpjsip-armv7-apple-darwin_ios.a(aes.o)
  "_mcrypt_generic_init", referenced from:
      _encrypt_AES in libpjsip-armv7-apple-darwin_ios.a(aes.o)
      _decrypt_AES in libpjsip-armv7-apple-darwin_ios.a(aes.o)
  "_mcrypt_module_close", referenced from:
      _encrypt_AES in …
Run Code Online (Sandbox Code Playgroud)

c gcc aes mcrypt pjsip

14
推荐指数
1
解决办法
360
查看次数

mcrypt警告但仍解密数据

我在这堂课中有点奇怪:

<?php
namespace lib;

/**
 * Short description of Crypt
 *
 * @author xxxx
 * @package
 */
class Encryption
{
    /**
     * Short description of _ch
     * handle to the mcrypt resource
     *
     * @access private
     * @var $_ch
     */
    private $_ch;

    /**
     * Short description of __construct
     *
     * @access public
     * @author xxxx
     * @param
     * @return void
     */
    public function __construct( $keyData = NULL, $algorithm = \MCRYPT_RIJNDAEL_256, $mode = MCRYPT_MODE_ECB, $encLibPath = '', $modeDir = '' ) …
Run Code Online (Sandbox Code Playgroud)

php mcrypt

13
推荐指数
1
解决办法
937
查看次数

php:mcrypt_encrypt到openssl_encrypt,以及OPENSSL_ZERO_PADDING问题

对于给定的$ key,$ message和$ iv,我有这个mcrypt_encrypt调用:

$string = mcrypt_encrypt(MCRYPT_3DES, $key, $message, MCRYPT_MODE_CBC, $iv);
Run Code Online (Sandbox Code Playgroud)

我想将mcrypt_encrypt呼叫改为$key一个,以便将来证明这一点.

通过具有$message$ivmcrypt_encrypt我得到的更多的类似的反应,但不完全相同.还有其他方法可以称之为完美匹配吗?

我正在为lorem-ipsum openssl_encrypt+ $mode = 'des-ede3-cbc'组合得到这个(base64_encoded),所以我开始相信一个函数或另一个函数在加密前稍微填充消息...

对于mcrypt

"Y + JgMBdfI7ZYY3M9lJXCtb5Vgu + rWvLBfjug2GLX7uo ="

为了openssl

"Y + JgMBdfI7ZYY3M9lJXCtb5Vgu + rWvLBvte4swdttHY ="

尝试使用$ options传递OPENSSL_ZERO_PADDING,但传递除1 之外的任何内容(OPENSSL_RAW_DATAtrue)会导致空字符串...

既不使用$mode = '3DES';也不$options = true工作... :(

还有其他线索吗?我正在使用"OpenSSL 1.0.2g 2016年3月1日".

已经读过这个 q&a,但它对我没有帮助.不是唯一 一个有填充问题的人,但到目前为止还没有解决方案.(第二个答案谈到添加填充到mcrypt调用,我真的想从openssl加密调用中删除填充...

php openssl 3des mcrypt php-openssl

13
推荐指数
1
解决办法
1万
查看次数

标签 统计

mcrypt ×10

php ×8

encryption ×2

php-openssl ×2

3des ×1

aes ×1

apache ×1

c ×1

centos ×1

cryptography ×1

decode ×1

encoding ×1

gcc ×1

laravel ×1

laravel-4 ×1

macos ×1

mamp ×1

openssl ×1

php-7.1 ×1

pjsip ×1