如何加密和解密PHP字符串? [英] How do you Encrypt and Decrypt a PHP String?
问题描述
我的意思是:
原始字串+盐或键 - >加密字符串
加密字符串+盐或键 - >解密(原始字符串)
可能类似:
hello world! +ABCD1234 - >加密 - > 2a2ffa8f13220befbe30819047e23b2c(例如可以是)
2a2ffa8f13220befbe30819047e23b2c - >使用ABCD1234解密 - > 你好,世界!
- 在PHP中,您如何做?
尝试使用 Crypt_Blowfish
不起作用
警告:
此答案使用 ECB 。 ECB不是加密模式,它只是一个构建块。使用ECB,如本答案所示,实际上并不加密字符串。不要在代码中使用ECB。有关解决方案,请参见 Scott的回答。
我得到了自己。实际上,我发现一些答案谷歌和只是修改的东西。 然而,结果是完全不安全。
<?php
define(ENCRYPTION_KEY ,!@#$%^& *);
$ string =这是原始数据字符串!
echo $ encrypted = encrypt($ string,ENCRYPTION_KEY);
echo< br />;
echo $ decryptpted = decrypt($ encrypted,ENCRYPTION_KEY);
/ **
*返回加密的& utf8-encoded
* /
function encrypt($ pure_string,$ encryption_key){
$ iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH,MCRYPT_MODE_ECB);
$ iv = mcrypt_create_iv($ iv_size,MCRYPT_RAND);
$ encrypted_string = mcrypt_encrypt(MCRYPT_BLOWFISH,$ encryption_key,utf8_encode($ pure_string),MCRYPT_MODE_ECB,$ iv);
return $ encrypted_string;
}
/ **
*返回解密的原始字符串
* /
函数decrypt($ encrypted_string,$ encryption_key){
$ iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH,MCRYPT_MODE_ECB);
$ iv = mcrypt_create_iv($ iv_size,MCRYPT_RAND);
$ decryptpted_string = mcrypt_decrypt(MCRYPT_BLOWFISH,$ encryption_key,$ encrypted_string,MCRYPT_MODE_ECB,$ iv);
return $ decryptpted_string;
}
?>
What I mean is:
Original String + Salt or Key --> Encrypted String
Encrypted String + Salt or Key --> Decrypted (Original String)
Maybe something like:
"hello world!" + "ABCD1234" --> Encrypt --> "2a2ffa8f13220befbe30819047e23b2c" (may be, for e.g)
"2a2ffa8f13220befbe30819047e23b2c" --> Decrypt with "ABCD1234" --> "hello world!"
- In PHP, how can you do this?
Attempted to use Crypt_Blowfish
, but it didn't work for me.
What not to do
WARNING:
This answer uses ECB. ECB is not an encryption mode, it's only a building block. Using ECB as demonstrated in this answer does not actually encrypt the string securely. Do not use ECB in your code. See Scott's answer for a good solution.
I got it on myself. Actually i found some answer on google and just modified something. The result is completely insecure however.
<?php
define("ENCRYPTION_KEY", "!@#$%^&*");
$string = "This is the original data string!";
echo $encrypted = encrypt($string, ENCRYPTION_KEY);
echo "<br />";
echo $decrypted = decrypt($encrypted, ENCRYPTION_KEY);
/**
* Returns an encrypted & utf8-encoded
*/
function encrypt($pure_string, $encryption_key) {
$iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$encrypted_string = mcrypt_encrypt(MCRYPT_BLOWFISH, $encryption_key, utf8_encode($pure_string), MCRYPT_MODE_ECB, $iv);
return $encrypted_string;
}
/**
* Returns decrypted original string
*/
function decrypt($encrypted_string, $encryption_key) {
$iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$decrypted_string = mcrypt_decrypt(MCRYPT_BLOWFISH, $encryption_key, $encrypted_string, MCRYPT_MODE_ECB, $iv);
return $decrypted_string;
}
?>
这篇关于如何加密和解密PHP字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!