相关疑难解决方法(0)

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

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

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

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

有什么建议?

php encryption scramble mcrypt

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

用PHP加密,用Javascript解密(cryptojs)

我在基本加密/解密方面遇到了麻烦.我一直在寻找一个有效的例子,但还没有找到一个有效的例子.

- 我将在php中进行加密,使用cryptoj解密以获得一小部分安全性

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js">
<?
$text = "this is the text here";
$key = "encryptionkey";

$msgEncrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_CBC, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND));
$msgBase64 = trim(base64_encode($msgEncrypted));

echo "<h2>PHP</h2>";
echo "<p>Encrypted:</p>";
echo $msgEncrypted;
echo "<p>Base64:</p>";
echo $msgBase64;
 ?>

<p>AES Decrypt</p>
<script> 
    var key = 'encryptionkey';
    var encrypted = "<?php echo $msgBase64 ?>";
    //tried  var base64decode = CryptoJS.enc.Base64.parse(encrypted); 
    var decrypted = CryptoJS.AES.decrypt(encrypted, key);
    console.log( decrypted.toString(CryptoJS.enc.Utf8) );
</script>
Run Code Online (Sandbox Code Playgroud)

我错过了哪一步?

javascript php encryption cryptojs

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

如何在PHP中加密字符串?

我想创建一个应该有一些密钥的加密函数.类似于以下内容:

function encrypt($string) {
    $key = "mastermind";
    $enc = encryptfunc($string, $key);

    return $enc;
}
Run Code Online (Sandbox Code Playgroud)

同样的事情应该适用于解密.

php encryption

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

如何将敏感数据安全地存储在MySQL数据库中?

我正在为我工​​作的公司提出求职申请.我已经有了它来防止SQL注入和一些XSS技术.我的主要问题是保护敏感信息,例如SSN和地址,因为公司需要为销售人员的税收制作1099个表格.

我不知道如何做这个部分,但是我应该加密一切,然后在进入MySQL数据库时解密它?

php security encryption

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

PHP通过URL发送加密数据

我正在尝试通过url将加密数据发送到另一个站点(使用file_get_contents("anotherUrl.php?hash=$encryptedString").问题是,有时,加密包含一些特殊字符,如+,这会导致解密失败.

这是我的加密/解密方法:

public function encrypt($string, $key)
{
    return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));
}

public function decrypt($encrypted, $key)
{
    return rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($encrypted), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
}
Run Code Online (Sandbox Code Playgroud)

这是一个包含a的加密字符串示例+,我猜这会导致解密失败.

oWCrVPaS+5GbxcQFc0fulUk/zRAkDD60av4zlPiWskE=

任何想法我应该如何解决这个问题?我试图做urlencode()和urldecode()哈希,但这似乎也导致加密打破.有没有办法更改加密算法,使其只返回url安全字符?

php encryption base64 mcrypt url-encoding

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

使用密钥PHP加密和解密字符串

我正在寻找一些函数来使用指定的密钥加密和解密php中的字符串.

谢谢!

php encryption

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

通过将用户的id +时间加密为JSON来创建访问令牌

我正在制作API而且我是新手.我想到了创建访问令牌的想法.基本上,我们使用密钥加密JSON数据,将其转换为Base64并将其作为访问令牌返回.之后,API解密访问令牌并可以使用id.例如:

login method:我们检查用户名/密码是否正确,如果是,那么我们从数据库中获取用户的id.然后我们构造访问令牌,它将在未来的API调用中使用,如下所示:

  1. 我们制作一个JSON字符串,例如 {"user_id":609, "logintime":"1430428180"}
  2. 我们使用加密函数(例如这些)并使用我们的加密密钥加密该JSON字符串.
  3. 我们将加密的字符串转换为Base64,因此它是可读的并将其作为访问令牌返回.

稍后,当用户进行操作时,我们可以使用此访问令牌来了解用户.例如:

update user info method:我们发送需要更新的数据和访问令牌,这是我们之前获得的.然后我们:

  1. Base64解码访问令牌.
  2. 使用我们的加密密钥解密它.
  3. 解析JSON数据并且我们知道用户的id,因此我们可以轻松更新数据库.此外,我们知道API调用是合法的,因为解密的字符串是JSON,它包含user_id和logintime字段.

这种做法有什么好处吗?

php security api encryption access-token

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

使用mcrypt进行PHP解密会返回难以理解的文本而不是原始明文

我只是想加密和解密一个字符串.但是当我输出解密的字符串时,我只得到:

??
  ^????V??_??n?.ZZ?????:?2??
Run Code Online (Sandbox Code Playgroud)

我的代码:

function encrypt($string, $secret_key = "ATRTHTRAGSFRSGTS") {                                                                                                                   
   $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND);                                                                      
   return mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $secret_key, $string, MCRYPT_MODE_CBC, $iv);                                                                             
}                                                                                                                                                                       

function decrypt($string, $secret_key = "ATRTHTRAGSFRSGTS") {                                                                                                                   
   $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND);                                                                      
   return mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $secret_key, $string, MCRYPT_MODE_CBC, $iv);                                                                             
}                                                                                                                                                                       
$text = 'This is a test.';                                                                                                                                              
$enc = encrypt($text);                                                                                                                                                  
$dec = decrypt($enc);                                                                                                                                                   

echo $dec;
Run Code Online (Sandbox Code Playgroud)

任何想法都可能出错?

php encryption mcrypt

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

我想将软件许可证密钥加密/解密到mysql数据库中

我想将软件许可证密钥存储在我的mysql数据库的一个字段中,但我希望以乱码格式存储许可证号,这样如果数据库被泄露,许可证密钥将无法使用.

许可证密钥字段有3种可能的方案:

  1. 它可能为null - 某些用户还没有存储在数据库中的许可证密钥.
  2. 它可能是25位数的许可证,每5个字符由一个超级分隔:例如:ABCD1-EFGH2-IJKL3-MNOP4-QRST5
  3. 它可能是10位数的许可证,所有这些都是数字,并且没有分隔符:例如:1234567890

我想在存储之前加扰许可证,然后在登录后向用户显示时,再次运行相同的加扰功能以解密许可证.

我想我需要先检查许可证的格式.

  1. 如果为0,则什么也不做.我可以在加载函数之前检查它是否为null.
  2. 如果是29,则使用连字符分隔符来混洗许可证的各个部分,例如2nd和4th,并且可以使用str_rot13来更改字母字符.
  3. 如果是10,请选择说出第3,第5,第7和第9个字符并更改其顺序.比如第5名第9名和第3名第7名.

我设置了以下内容:

    function scramble($scramblestr) {

    // check string length
    $length = strlen($scramblestr);

    // if 10 digit license (all numbers)
    if ($length == 10) {
        $1st = substr($scramblestr, 0, 1);
        $2nd = substr($scramblestr, 1, 1);
        $3rd = substr($scramblestr, 2, 1);
        $4th = substr($scramblestr, 3, 1);
        $5th = substr($scramblestr, 4, 1);
        $6th = substr($scramblestr, 5, 1);
        $7th = substr($scramblestr, 6, 1);
        $8th = substr($scramblestr, 7, 1);
        $9th = substr($scramblestr, 8, 1); …
Run Code Online (Sandbox Code Playgroud)

php mysql syntax-error scramble

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

加密会导致无效密钥大小出错

我正在创建一个随机密钥,然后我想使用一个好的算法加密它,然后我想用这个加密的密钥加密数据.我的代码是:

$iv=16; //128bits
$datakey = base64_encode(openssl_random_pseudo_bytes($iv,$strong));
$datakey = md5($datakey);
$finaldata= mcrypt_encrypt(MCRYPT_BLOWFISH, $datakey, $stringtobeencoded, MCRYPT_MODE_CFB);
Run Code Online (Sandbox Code Playgroud)

错误:

加密模式需要大小为8的初始化向量

如何完成我的要求?

php security encryption mcrypt

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

PHP Openssl加密URL的数据

我有这个代码:

<?php

$key = 'thisisakey';
$iv = '1234567812345678';

$plaintext = 'Hello World';

$ciphertext = openssl_encrypt($plaintext,  'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
echo $ciphertext . '<br>';

$plaintext  = openssl_decrypt($ciphertext, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv); 
echo $plaintext . '<br>';

?>
Run Code Online (Sandbox Code Playgroud)

此代码背后的想法是加密要在URL上使用的数据.所以,我期待输出哪个URL友好.我的意思是,它只包含字母数字字符.但是当我使用这个openssl_encrypt函数时,我得到了奇怪的字符,我不认为URL友好.

它产生这样的输出:

^‘-7Ⱦ®l¿ô¾áÙ
Run Code Online (Sandbox Code Playgroud)

如何生成URL友好字符openssl_encrypt?谢谢

php encryption

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

如何使用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
查看次数

在PHP 7中使用salt进行最佳加密/解密

我正在寻找最简单和安全的方法来加密/解密PHP7中特定盐的字符串

my string + specific salt = encryped data 
decode(encryped data) = my string
Run Code Online (Sandbox Code Playgroud)

我看到了这篇文章,但mcrypt_encrypt似乎已被弃用了.你有其他建议或例子吗?谢谢

php encryption

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