在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