Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中加密字符串_Php_String_Encryption - Fatal编程技术网

在PHP中加密字符串

在PHP中加密字符串,php,string,encryption,Php,String,Encryption,目前我正在使用 $key="pass"; $val="secret"; $encp=mcrypt_encrypt(MCRYPT_DES, $key, $val, MCRYPT_MODE_ECB); 但是当我调用printf($encp) 不显示任何值,im使用PHP版本5.2.17 有更好的方法吗?请帮忙 编辑: 更新(2017年9月27日): 自PHP 7.1.0以来,已弃用。我添加了一个简单的加密/解密使用 试试这些:(PHPphp7.1.0,请参见上文 define('SECURE_K

目前我正在使用

$key="pass";
$val="secret";
$encp=mcrypt_encrypt(MCRYPT_DES, $key, $val, MCRYPT_MODE_ECB);
但是当我调用printf($encp) 不显示任何值,im使用PHP版本5.2.17

有更好的方法吗?请帮忙

编辑:


更新(2017年9月27日): 自PHP 7.1.0以来,已弃用。我添加了一个简单的加密/解密使用

试试这些:(PHP<7.1.0)如果您使用的是>php7.1.0,请参见上文

define('SECURE_KEY','Somekey');//Assigned within a config, pref outside of root dir

function encrypt($value){
    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    return mcrypt_encrypt(MCRYPT_RIJNDAEL_256, SECURE_KEY, $value, MCRYPT_MODE_ECB, $iv);
}

function decrypt($value){
    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, SECURE_KEY, $value, MCRYPT_MODE_ECB, $iv));
}
//Simple usage
$encryptedString = encrypt('This String Will Be encrypted');
echo decrypt($encryptedString);
从源代码处编辑-

尝试以下PHP函数:


这要简单得多,并且不依赖于PHP中安装的库

什么是
$hash
?您的意思是
$encp
?请添加完整的代码。。。缺少
$hash
$key
和“$val”…@diewie是。很抱歉,它已更新。请参阅encryptoin中的这些不同方法…如何为SECURE_key和Somekey
定义值('SECURE_key'、'SomeOtherKeyOrSecretCodeNotGreaterThen32Chars')如何为安全密钥和SomeKey@techno不知道你的意思是什么,一旦定义了一个常量,那么它就可以完全使用了。我的意思是,如果你想分配“密码”;为了保护你的钥匙。怎么做?除非我们知道情况如何,否则我不建议这样做。这会改变文本,但它本质上与明文一样安全。对于密码,您应该使用mcrypt和您选择的密码,尽管Bcrypt很受欢迎是有原因的。PHP5.5+为此提供了内置功能,每个密码都具有唯一的密码,如果您希望PHP5.4中的向后兼容性,可以使用此库
function encrypt($string, $key = 'PrivateKey', $secret = 'SecretKey', $method = 'AES-256-CBC') {
    // hash
    $key = hash('sha256', $key);
    // create iv - encrypt method AES-256-CBC expects 16 bytes
    $iv = substr(hash('sha256', $secret), 0, 16);
    // encrypt
    $output = openssl_encrypt($string, $method, $key, 0, $iv);
    // encode
    return base64_encode($output);
}

function decrypt($string, $key = 'PrivateKey', $secret = 'SecretKey', $method = 'AES-256-CBC') {
    // hash
    $key = hash('sha256', $key);
    // create iv - encrypt method AES-256-CBC expects 16 bytes
    $iv = substr(hash('sha256', $secret), 0, 16);
    // decode
    $string = base64_decode($string);
    // decrypt
    return openssl_decrypt($string, $method, $key, 0, $iv);
}

$str = 'Encrypt this text';
echo "Plain: " .$str. "\n";

// encrypt
$encrypted_str = encrypt($str);
echo "Encrypted: " .$encrypted_str. "\n";

// decrypt
$decrypted_str = decrypt($encrypted_str);
echo "Decrypted: " .$decrypted_str. "\n";
define('SECURE_KEY','Somekey');//Assigned within a config, pref outside of root dir

function encrypt($value){
    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    return mcrypt_encrypt(MCRYPT_RIJNDAEL_256, SECURE_KEY, $value, MCRYPT_MODE_ECB, $iv);
}

function decrypt($value){
    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, SECURE_KEY, $value, MCRYPT_MODE_ECB, $iv));
}
//Simple usage
$encryptedString = encrypt('This String Will Be encrypted');
echo decrypt($encryptedString);
function encrypt_decrypt ($data, $encrypt) {
    if ($encrypt == true) {
        $output = base64_encode (convert_uuencode ($data));
    } else {
        $output = convert_uudecode (base64_decode ($data));
    }
    return $output;
}

$enc_txt = encrypt_decrypt ("PASSWORD TEXT", true);
echo $enc_txt."\n";
// LTQkJTM0VT0vNEQwQDUkNTg1YGBgCmAK
echo encrypt_decrypt ($enc_txt, false);
// PASSWORD TEXT