如何检查我的加密是否正确

时间:2014-06-19 17:16:52

标签: php encryption

您好我有这个加密密码和/或用户名的代码。我试图学习一种更好的编码方式,所以我问这个问题并抱歉如果这是其中一个基本问题。

我按照另一篇文章中提到的步骤This one 我想要显示(仅用于测试目的,如果我做的是正确的)它不需要是用户名或密码,只要我输入框中插入的纯文本就可以看到我输入的内容是否加密使用我的代码。请帮帮我。在这种情况下永远坚持下去。

现在这是我的代码。

MCrypt.php(刚复制过来)

<?php 

    class MCrypt
    {
            private $iv = 'fedcba9876543210'; #Same as in JAVA
            private $key = '0123456789abcdef'; #Same as in JAVA


            function __construct()
            {
            }

            function encrypt($str) {

              //$key = $this->hex2bin($key);    
              $iv = $this->iv;

              $td = mcrypt_module_open('rijndael-128', '', 'cbc', $iv);

              mcrypt_generic_init($td, $this->key, $iv);
              $encrypted = mcrypt_generic($td, $str);

              mcrypt_generic_deinit($td);
              mcrypt_module_close($td);

              return bin2hex($encrypted);
            }

            function decrypt($code) {
              //$key = $this->hex2bin($key);
              $code = $this->hex2bin($code);
              $iv = $this->iv;

              $td = mcrypt_module_open('rijndael-128', '', 'cbc', $iv);

              mcrypt_generic_init($td, $this->key, $iv);
              $decrypted = mdecrypt_generic($td, $code);

              mcrypt_generic_deinit($td);
              mcrypt_module_close($td);

              return utf8_encode(trim($decrypted));
            }

            protected function hex2bin($hexdata) {
              $bindata = '';

              for ($i = 0; $i < strlen($hexdata); $i += 2) {
                    $bindata .= chr(hexdec(substr($hexdata, $i, 2)));
              }

              return $bindata;
            }

    }
?>

这是我提交的.php,我不知道它是否正确但是当我尝试它时显​​示这些错误

Notice: Use of undefined constant MCrypt - assumed 'MCrypt' in    C:\xampp\htdocs\HSC\submit.php on line 2
Notice: Use of undefined constant php - assumed 'php' in C:\xampp\htdocs\HSC\submit.php   on line 2
Warning: include(MCryptphp): failed to open stream: No such file or directory in C:\xampp\htdocs\HSC\submit.php on line 2
Warning: include(): Failed opening 'MCryptphp' for inclusion (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\HSC\submit.php on line 2
Fatal error: Class 'MCrypt' not found in C:\xampp\htdocs\HSC\submit.php on line 4

这是我的submit.php

<?php
include(MCrypt.php);

$mcrypt = new MCrypt();
#Encrypt
$encrypted = $mcrypt->encrypt('fruit1');
?>

和我的index.php

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form action="submit.php">
<input type="text" id="fruit1">
<input type="text" id="fruit2">
<input type="submit" id="submitfruit" name="clickme">
</form>
</body>
</html>

1 个答案:

答案 0 :(得分:1)

  

您好我有这个加密密码和/或用户名的代码。

您的第一句话违反basic cryptography concepts

  

我正在尝试学习一种更好的编码方式,所以我问这个问题并抱歉如果这是其中一个基本问题。

作为一名PHP密码学专家,在密码学方面更好的编码方法是使用信誉良好且经过充分研究的库,而不是自己编写。

有关基本字符串加密的信息,请参见defuse/php-encryption;正确存储密码,请参见password_hash() / password_verify()

对于您复制和粘贴的代码,它使用硬编码的IV进行CBC模式(大规模操作加密失败),并且无法应用message authentication to the encryption。不要用它做任何事情。