如何加密和解密PHP字符串? [英] How do you Encrypt and Decrypt a PHP String?

查看:153
本文介绍了如何加密和解密PHP字符串?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的意思是:

 原始字串+盐或键 - >加密字符串
加密字符串+盐或键 - >解密(原始字符串)

可能类似:

 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆