标签: mcrypt

Blowfish和Blowfish-compat有什么区别?

我似乎无法找到差异的来源.我在这个在线解密工具中发现了这种差异

http://www.tools4noobs.com/online_tools/decrypt/

我有一些加密的Blowfish数据,我试图通过Python的PyCrypto模块解密.然而,问题是数据似乎是用"blowfish-compat"加密的,因为这是通过在线工具解密它所需要的; 我不能通过PyCrypto的模块解密它,我收集它严格使用Blowfish解密(而不是Blowfish-compat,不管是什么).

有可能以某种方式通过Python解密blowfish-compat吗?我不知道两者之间的区别.

python encryption blowfish mcrypt

5
推荐指数
1
解决办法
2206
查看次数

mcrypt_encrypt或mcrypt_decrypt无法使用基本的html表单

根据 stackoverflow 上的一些例子,我创建了一个页面来破解和解密来自html表单的文本.但不知何故,有时候这种情况有时不起作用,而且通常不会.

为什么会这样?htmlencode是否修改了发布过程中的键?我该如何解决这个问题?我应该使用base64吗?

<?php
$key_size = mcrypt_get_key_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CFB);
$encryption_key = openssl_random_pseudo_bytes($key_size, $strong);

$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CFB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_DEV_URANDOM); // 16 bytes output


if($_POST){
    $iv = $_POST["iv"];
    $encryption_key = $_POST["key"];
    $string = $_POST["msg"];


    if($_POST["do"]=="encrypt"){
        echo "crypted";
        $result = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $encryption_key, $string, MCRYPT_MODE_CFB, $iv);
    }else{
        echo "de-crypted";
        $result = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $encryption_key, $string, MCRYPT_MODE_CFB, $iv);
    }

}

?>
<div class="main" id="main">
    <form method="POST" action="">
    <input type="text" value="<?php echo $iv; ?>" name="iv"/> <br/>
    <input type="text" value="<?php echo $encryption_key; ?>" name="key"/><br/> …
Run Code Online (Sandbox Code Playgroud)

php mcrypt

5
推荐指数
1
解决办法
1692
查看次数

在node.js中重新创建MCRYPT_RIJNDAEL_128

尝试在node.js中重新创建以下php加密代码:

$size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($size, MCRYPT_RAND);
$msg = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, 'MY_KEY_LONG_STRING', 'PLAINTEXT', MCRYPT_MODE_ECB, $iv));
Run Code Online (Sandbox Code Playgroud)

尝试过这个:

var text = 'PLAINTEXT';
var len = text.length;
for (var i = 0; i < 16 - len % 16; i++) {  // pad to multiple of block size 
    text += '\0';
}
var key = 'MY_KEY_LONG_STRING';
key = key.substr(0, 16); // trim to expected key size for aes128

var cipher = crypto.createCipher('aes-128-ecb', key);
cipher.setAutoPadding(false); // did our own padding, to match mcrypt_encrypt …
Run Code Online (Sandbox Code Playgroud)

javascript php aes mcrypt node.js

5
推荐指数
1
解决办法
3655
查看次数

如何使用遗留数据从 mcrypt 迁移到 openssl?

我有一些使用 PHP 的 mcrypt 函数加密的旧数据。该站点现在使用 PHP 7.1,这意味着我们遇到了弃用错误。我想迁移到使用 openssl 函数(这似乎是当前推荐的方法),但我不知道如何可靠地解密旧的加密数据。

有没有一种相当简单的方法来实现这一点?

php encryption openssl mcrypt

5
推荐指数
0
解决办法
881
查看次数

从Mcrypt与Blowfish和ECB一起移动到OpenSSL

在(不太遥远)过去,(在这里工作较长的人)做出的决定总是将数据库ID"加密"到其他东西,即时,只要外部通信需要它.

现在,我们已经从PHP 5.x转移到PHP 7.0用于我们的主应用程序,而我们遍布基础架构的微服务运行7.0或7.1.7.1服务器继续抛出mcrypt的弃用警告.没什么大不了的.但是随着PHP 7.2的到来,我们希望不断更新和升级.麦克莱普正在阻挠.

要在1400个数据库中保存60个表中的所有当前加密值,这是一项艰巨的任务.有没有办法利用OpenSSL,Blowfish和ECB,获得相同的编码和解码值,以使我们陷入虚假的安全感?所有这些都可以让我们远程规划数据库迁移.

基本上,当前加密的值是这样的:

item:13fb7533bf19399ff114468b194ebfaf

这是身份证123.它通过以下函数来获取此字符串:

$id   = 123;
$type = 'item';

$serialized = serialize('' . $id); // To make sure always a string gets put in

$ivSize = mcrypt_create_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB), MCRYPT_RAND);
$iv     = mcrypt_create_iv($ivSize);

$passCrypt = mcrypt_encrypt(MCRYPT_BLOWFISH, $type, $serialized, MCRYPT_MODE_ECB, $iv);
$encoded   = bin2hex($passCrypt); // `13fb7533bf19399ff114468b194ebfaf`

$encryptedId = $type . ':' . $encoded;
Run Code Online (Sandbox Code Playgroud)

这给出了最终结果item:13fb7533bf19399ff114468b194ebfaf.

现在,换句话说:

$encryptedId = 'item:13fb7533bf19399ff114468b194ebfaf';

$type = 'item';
$encryptedIdOnly = substr($encryptedId, strlen($type) + 1); // `13fb...`

$decoded   = hex2bin($encryptedIdOnly); …
Run Code Online (Sandbox Code Playgroud)

php openssl blowfish mcrypt

5
推荐指数
1
解决办法
2297
查看次数

mcrypt_encrypt无法初始化

我试图使用Cbit模式中的Rijndael密码使用256位密钥加密PHP中的一些数据但由于某种原因我收到以下错误消息:

mcrypt_encrypt()模块初始化失败

我的代码:

    $hashKey = hash('sha256',$key);
    $iv = hash('sha256',$hashKey);

    //                                                 ------Cipher-------------key-------------Data-------------Mode---------IV--
    $encryptedQuestion = base64_encode(mcrypt_encrypt('MCRYPT_RIJNDAEL_256', $hashKey , $_POST['question'], MCRYPT_MODE_CBC, $iv));
Run Code Online (Sandbox Code Playgroud)

任何人都可以看到这个错误吗?

php encryption aes mcrypt

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

使用Mountain Lion上的Homebrew为php54安装mcrypt支持的问题

我正在尝试使用Homebrew在Mountain Lion上的PHP 5.4.11中安装mcrypt支持,我遇到了无法解决的问题.

我已经在我的Mac上手动安装了PHP 5.4.11.先前已经使用Homebrew安装了mcrypt.

当我加载phpMyAdmin时,它会告诉我mcrypt没有启用.

所以,搜索谷歌,我意识到,不知何故,mcrypt没有被加载,因为当我加载我的phpinfo文件时没有引用它.

@DavidYell在回答另一个问题时,在OSX Mountain Lion上安装PHP的mcrypt扩展提示了以下修复

brew install mcrypt php53-mcrypt

以下是我发出命令的结果:

$ brew install mcrypt php54-mcrypt
Error: mcrypt-2.5.8 already installed
==> Installing php54-mcrypt dependency: autoconf
==> Downloading http://ftpmirror.gnu.org/autoconf/autoconf-2.69.tar.gz
######################################################################## 100.0%
==> ./configure --prefix=/usr/local/Cellar/autoconf/2.69
==> make install
  /usr/local/Cellar/autoconf/2.69: 69 files, 2.0M, built in 29 seconds
==> Installing php54-mcrypt dependency: freetype
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/freetype-2.4.10.mountainlion.bottle.tar.gz
######################################################################## 100.0%
==> Pouring freetype-2.4.10.mountainlion.bottle.tar.gz
  /usr/local/Cellar/freetype/2.4.10: 56 files, 2.5M
==> Installing php54-mcrypt dependency: gettext
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/gettext-0.18.2.mountain_lion.bottle.tar.gz
######################################################################## 100.0%
==> Pouring gettext-0.18.2.mountain_lion.bottle.tar.gz …
Run Code Online (Sandbox Code Playgroud)

php macos homebrew mcrypt

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

JavaScript加密和PHP解密

我在JavaScript中加密我的用户密码,如下所示:

 var encryptedPassword = CryptoJS.AES.encrypt(password, "Secret Passphrase");
Run Code Online (Sandbox Code Playgroud)

它工作正常,但现在我试图在服务器端解密PHP,如下所示:

 $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_RAND);
 $decryptPassword = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, "Secret Passphrase", base64_decode($password), MCRYPT_MODE_CBC, $iv);
Run Code Online (Sandbox Code Playgroud)

它根本不起作用,解密的密码字符串看起来很奇怪:

 string(64) ">?OX2MS???v?<$????i????_??P???\??=?_6(?m????,4WT7??a"
Run Code Online (Sandbox Code Playgroud)

以下是有用评论之后我的JavaScript代码的当前状态:

    var encryptedPassword = CryptoJS.AES.encrypt(password, "Secret Passphrase");
    var ivHex = encryptedPassword.iv.toString();
    var ivSize = encryptedPassword.algorithm.ivSize; // same as blockSize
    var keySize = encryptedPassword.algorithm.keySize;
    var keyHex = encryptedPassword.key.toString();
    var saltHex = encryptedPassword.salt.toString(); // must be sent
    var openSslFormattedCipherTextString = encryptedPassword.toString(); // not used
    var cipherTextHex = encryptedPassword.ciphertext.toString(); // must be sent
Run Code Online (Sandbox Code Playgroud)

我将saltHex和CipherTextHex发送到PHP服务器,我正在使用mcrypt_decrypt(),如下所示:

 $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), $saltHex); …
Run Code Online (Sandbox Code Playgroud)

javascript php encryption mcrypt cryptojs

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

具有PKCS7填充编码数据的AES 256具有一半ECB和一半CBC块

我试图解码从服务器返回的PHP中的数据:我知道数据AES 256解码并具有PKCS7填充,但无法弄清楚它使用哪种块模式

这是我的PHP功能:

public function decode($data)
{
    //AES decode
    $iv = mcrypt_create_iv(GEServerConnection::FBENCRYPT_BLOCK_SIZE, MCRYPT_RAND);
    $data = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $this->cryptKey, base64_decode($data), MCRYPT_MODE_ECB, $iv);

    //return $data;
    $len = strlen($data);
    $pad = ord($data[$len - 1]);

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

和编码数据的例子

3KD+zb/2u5gGEWvOy0Q0nSQE9pbQZmg27iN6WLiO/Af9YjN8MhHOb8TMa5uETaab
Run Code Online (Sandbox Code Playgroud)

当我使用ECB(MCRYPT_MODE_ECB)进行解码时,它只解码数据的开头并且其余部分无法读取

"Please input yo??????g|??*P?Te???  R?B
Run Code Online (Sandbox Code Playgroud)

当用CBC(MCRYPT_MODE_CBC)模式解码时,它开始不可读

??0?=v??????.3ur username and password again"
Run Code Online (Sandbox Code Playgroud)

结果应该是(在Objective-c中使用CommonCryptor获得的mac):

"Please input your username and password again"
Run Code Online (Sandbox Code Playgroud)

有人知道什么是错的或如何以正确的方式解码它?

php aes objective-c mcrypt commoncrypto

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

php错误:加密库需要在codeigniter中使用Mcrypt扩展

我有一个登录和注册表单,并使用加密库加密密码..我正在使用Xampp我的服务器,我的系统正常工作..

用于加密密码的代码:

$this->encrypt->encode('my password'); 
Run Code Online (Sandbox Code Playgroud)

添加加密库

 $autoload['libraries'] = array('encrypt');
Run Code Online (Sandbox Code Playgroud)

并在config中设置密钥:

$config['encryption_key'] = 'nmsc encrypt secret key';
Run Code Online (Sandbox Code Playgroud)

我的代码在Windows中使用xampp服务器效果很好,但是当我试图将我的网站上传到ubuntu服务器时我发现了一个错误说

Encrypt库需要Mcrypt扩展

如何解决这个问题?参考本指南https://www.codeigniter.com/user_guide/libraries/encryption.html但我不知道如何安装该mcrypt.我的网站需要从ubuntu服务器运行.如何安装或修复该问题?

php encryption codeigniter mcrypt

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