相关疑难解决方法(0)

使用PHP加密和解密密码的最佳方法?

可能重复:
PHP双向加密:我需要存储可以检索的密码

我计划在我的网站上为我的用户存储外国帐户信息,也就是用户名和密码等等...我想保证信息的安全,但我知道如果我散列他们的信息,我无法检索它以供以后使用.

Base64是可解密的,所以没有必要使用它只是简单的关闭.我的想法是加扰用户并在它解密之前和之后通过这种方式传递,如果你尝试解密,你会得到一些看起来很有趣的文本.是否有一个php函数接受将进行字符串的唯一加扰的值,并在以后重新计算该值时对其进行解扰?

有什么建议?

php encryption scramble mcrypt

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

PHP:json_decode无效

这并不能正常工作:

$jsonDecode = json_decode($jsonData, TRUE);
Run Code Online (Sandbox Code Playgroud)

但是,如果我复制字符串$jsonData并将其手动放入解码函数中,它确实有效.

有效:

$jsonDecode = json_decode('{"id":"0","bid":"918","url":"http:\/\/www.google.com","md5":"6361fbfbee69f444c394f3d2fa062f79","time":"2014-06-02 14:20:21"}', TRUE);
Run Code Online (Sandbox Code Playgroud)

我输出$jsonData复制它并在解码函数中输入如上所述.然后它奏效了.但是,如果我$jsonData直接放入解码功能,它不会.

var_dump($jsonData) 说明:

string(144) "{"id":"0","bid":"918","url":"http:\/\/www.google.com","md5":"6361fbfbee69f444c394f3d2fa062f79","time":"2014-06-02 14:20:21"}"
Run Code Online (Sandbox Code Playgroud)

$jsonData来自一个加密$_GET变量.要加密它我用这个:

$key = "SOME KEY";

$iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);

$enc = mcrypt_encrypt(MCRYPT_BLOWFISH, $key, $data, MCRYPT_MODE_ECB, $iv);

$iv = rawurlencode(base64_encode($iv));
$enc = rawurlencode(base64_encode($enc));

//To Decrypt
$iv = base64_decode(rawurldecode($_GET['i']));
$enc = base64_decode(rawurldecode($_GET['e']));

$data = mcrypt_decrypt(MCRYPT_BLOWFISH, $key, $enc, MCRYPT_MODE_ECB, $iv);
Run Code Online (Sandbox Code Playgroud)

php json

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

将我的加密库从Mcrypt升级到OpenSSL

我使用下面常用的库进行加密.我想从Mcrypt将其升级到OpenSSL,以便我不再使用已弃用的库.

我试图找出这是否可能.我对此做了一些研究,但我发现了相互矛盾的信息:

这篇文章说,使用用Mcrypt加密的OpenSSL无法解密数据. /sf/answers/1382394611/

但是,这篇文章说可以使用填充.看来我的函数使用了填充.这是否是使这项工作所需的正确填充类型? /sf/answers/2213033931/

<?php 

namespace Utilities\Encryption;

/**
* A class to handle secure encryption and decryption of arbitrary data
*
* Note that this is not just straight encryption.  It also has a few other
* features in it to make the encrypted data far more secure.  Note that any
* other implementations used to decrypt data will have to do the same exact
*  operations.  
*
* Security Benefits:
*
* - Uses Key stretching
* …
Run Code Online (Sandbox Code Playgroud)

php encryption openssl mcrypt

20
推荐指数
1
解决办法
5909
查看次数

用OpenSSL取代Mcrypt

目前我们在我们的系统上有一个mcrypt实现,用于在PHP应用程序中隐藏一些敏感数据.现在我们有了一个新的要求,我们必须将crypt模块更改为openssl.另一件重要的事情是我们使用密码河豚和模式ecb.所以我开始测试有什么区别以及如何使用openssl解密mcrypt加密字符串.

我使用标准的PHP函数:

  • mcrypt_encrypt与openssl_encrypt
  • mcrypt_decrypt与openssl_decrypt

两种方法都会产生不同的结果.第二件事是在两种类型的给定密码(河豚)和模式(ecb)中需要不同的IV长度(openssl = 0和mcrypt = 56).

有没有人知道如何在没有大量迁移工作的情况下轻松更改模块?

提前致谢!

更新:

这是代码,我测试了它:

<?php 

function say($message){
    if(!is_string($message)){
        if(!isset($_SERVER["HTTP_USER_AGENT"])) echo "<pre>";
        echo var_export($message, true) . ((!isset($_SERVER["HTTP_USER_AGENT"]) ? "\n" : "<br />"));
        if(!isset($_SERVER["HTTP_USER_AGENT"])) echo "</pre>";
    }else{
        echo $message . ((!isset($_SERVER["HTTP_USER_AGENT"]) ? "\n" : "<br />"));
    }
}

say("= Begin raw encryption");
$key    = "anotherpass";
$str    = "does it work";

say("  Params:");
say("  - String to encrypt '".$str."'");
say("  - Key: ".$key);
say("");


$params = array(
    "openssl"  => array(
        "cipher"    => "BF",
        "mode" …
Run Code Online (Sandbox Code Playgroud)

php openssl mcrypt

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

如何保护我的插件,以便付费用户只能使用它?

我正在开发一些(wordpress)插件,我打算为想要使用它的人获得许可费.

因此,我需要一种方法来确保此插件不会上传到任何人都可以下载并免费使用的服务器.

所以我在考虑使用API​​密钥.有效的API密钥=用户可以使用该插件.无效=插件不起作用.

我已经看过这篇文章的PHP API密钥生成器,但我并没有那么明智.

我也知道,因为它是PHP,任何人都可以进入代码并禁用API检查(我只是在猜测)

保护插件的最佳方法是什么?API密钥?其他方法?有没有人有关于这个主题的任何好的教程的链接?

php wordpress code-access-security api-key

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

准备在PHP 7.2中删除Mcrypt

因此,随着时间的推移,mcrypt将进入PHP 7.2.当然还有另一种选择:openssl.

我发现很难从mcrypt切换到openssl,使用AES 256 CBC并保留IV.我对密码学有点新意,所以我真的不知道所有内容,但我理解基础知识.

假设我有以下代码

function encrypt($masterPassword, $data) 
{
    $keySize = mcrypt_get_key_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC);
    $ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC);
    $iv = mcrypt_create_iv($ivSize, MCRYPT_DEV_URANDOM);
    $key = mb_substr(hash('SHA256', $masterPassword), 0, $keySize);
    $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $data, MCRYPT_MODE_CBC, $iv);
    return base64_encode($iv . $encrypted);
}

function decrypt($masterPassword, $base64) 
{
    $keySize = mcrypt_get_key_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC);
    $ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC);
    $key = mb_substr(hash('SHA256', $masterPassword), 0, $keySize);
    $data = base64_decode($base64);
    $iv = substr($data, 0, $ivSize);
    $encrypted = substr($data, $ivSize, strlen($data));
    $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $encrypted, MCRYPT_MODE_CBC, $iv);
    return trim($decrypted); …
Run Code Online (Sandbox Code Playgroud)

php openssl mcrypt php-7.1

7
推荐指数
1
解决办法
6752
查看次数

简单安全登录php/javascript

我想创建一个安全的登录,所以我想在将其作为POST参数发送之前加密密码.我正在使用SHA1 javascript函数.

然后我意识到,如果有人截获加密密码,他可以立即使用它.将其作为post参数发送到相同的URL.

如何确保密码来自登录输入字段?也许用PHP会话?我还不想使用安全的http.任何人有一个简单的选择?

javascript php security sha1

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

在PHP中反向混淆纯文本字符串URL

我正在试图找出一种方法来编写一个能够对纯文本URL进行去混淆的函数.

像这样的东西:

<input type="hidden" value="kjgajkwe@#jktGAkjgWjkajskd" name="obsfucatedString" />
Run Code Online (Sandbox Code Playgroud)

然后在处理那个表格的时候我想要去除它:

$url = deObfuscate($_POST['obsfucatedString']);
so $url would become something like:
$url = 'http://domain.com/filename.zip';
Run Code Online (Sandbox Code Playgroud)

这样的事情甚至可能吗?

我试图隐藏普通程序员视线中的网址.

我想我还需要写一些能阻碍字符串的东西

所以

$obsfucatedStringURL = obsfucate('http://domain.com/filename.zip');
Run Code Online (Sandbox Code Playgroud)

php url-obsfucation deobfuscation

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

mysql和php中的AES加密

Mysql AES_encrypt中有一个函数.

SELECT AES_encrypt( "Hello World", "password" ) AS encrypted_value 
Run Code Online (Sandbox Code Playgroud)

这给出了结果: 9438eb79863e7009722fc3f0ad4b7198

但是当我使用php中的代码来执行AES_encrypt时,它给了我不同的值.

我从stackoverflow获得的PHP代码 - PHP AES加密/解密

<?php
base64_encode(
        mcrypt_encrypt(
            MCRYPT_RIJNDAEL_256,
            $sSecretKey, $sValue, 
            MCRYPT_MODE_ECB, 
            mcrypt_create_iv(
                mcrypt_get_iv_size(
                    MCRYPT_RIJNDAEL_256, 
                    MCRYPT_MODE_ECB
                ), 
                MCRYPT_RAND)
            )
        ), "\0"
?>
Run Code Online (Sandbox Code Playgroud)

PHP代码的结果是 ytip2sEkD87gmRk3IVI09qE7T+RoLr20YK4rJp16NkY=

在php或codeigniter中是否有一个方法,以便它返回相同的值. - 谢谢.

php mysql encryption codeigniter

0
推荐指数
1
解决办法
6669
查看次数

如何使用php加密和解密mysql数据库中的数据?

当我将这些东西添加到我的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以外的密钥?

php security encryption cryptography mcrypt

0
推荐指数
1
解决办法
5670
查看次数