无法使加密类工作

时间:2010-08-09 14:57:47

标签: php security encryption

我无法使用加密类(它位于classes文件夹中的单独文件中)。该类的代码是:

class SymmetricCrypt
{
    // Encryption/decryption key.
    private static $msSecretKey = "Hello";

    // The initialisation vector.
    private static $msHexaIv = "c7098adc8d6128b5d4b4f7b2fe7f7f05";

    // Use the Rijndael Algorithm.
    private static $msCipherAlgorithm = MCRYPT_RIJNDAEL_128;

    public static function Encrypt($plainString)
    {
        $binary_iv = pack("H*", SymmetricCrypt::$msHexaIv);

        // Encrypt source.
        $binary_encrypted_string = mcrypt_encrypt(SymmetricCrypt::$msCipherAlgorithm, SymmetricCrypt::$msSecretKey, $plainString, MCRYPT_MODE_CBC, $binary_iv);

        // Convert $binary_encrypted_string to hexadeciaml format.
        $hexa_encrypted_string = bin2hex($binary_encrypted_string);
        return $hexa_encrypted_string;
    }

    public static function Decrypt($encryptedString)
    {
        $binary_iv = pack("H*", SymmetricCrypt::$msHexaIv);

        // Convert string in hexadecimal to byte array.
        $binary_encrypted_string = pack("H*", $encryptedString);

        // Decrypt $binary_encrypted_string,
        $decrypted_string = mcrypt_decrypt(SymmetricCrypt::$msCipherAlgorithm, SymmetricCrypt::$msSecretKey, $binary_encrypted_string, MCRYPT_MODE_CBC, $binary_iv);

        return $decrypted_string;
    }
}

这就是我打电话给班级的方式:

require_once 'classes/symmetric_crypt.php';
$sc = new SymmetricCrypt();
$password = "password";
$ec_password = $sc->Encrypt($password);

... insert into database.

如果我回显$ password的内容,则显示“password”。如果我回显$ ec_password,它什么也不返回。

我以前在不同服务器上的其他项目中使用过它。它可能与服务器有关吗?还有其他想法吗?

谢谢,

阿德里安

1 个答案:

答案 0 :(得分:0)

作品here

两个注释:

  • 不应重复使用初始化向量。否则,更容易找到加密密钥(请参阅WEP)。
  • 就像premiso所说,你不应该将商店密码存储为可解密的字符串。使用具有强哈希函数的盐渍哈希(不是MD5!)。