首页 > 后端开发 > 正文

php同一个明文加密后如何得到不同的密文?而且这些密文解密后都是同一个明文!

2024-07-16 10:34:26 | 我爱编程网

今天我爱编程网小编为大家带来了php同一个明文加密后如何得到不同的密文?而且这些密文解密后都是同一个明文!,希望能帮助到大家,一起来看看吧!

本文目录一览:

php同一个明文加密后如何得到不同的密文?而且这些密文解密后都是同一个明文!

在PHP开发中六种加密的方法,你用的是哪种?

在PHP开发的世界里,数据的安全性至关重要。让我们深入探讨六种常见的加密方法,看看你在实际项目中是如何运用的。

首先,我们从PHP内置的加密函数谈起。PHP为我们提供了两种截然不同的加密手段:不可逆的和可逆的。不可逆的如 md5() ,它生成的哈希值是单向的,用于确保数据的唯一性,而 crypt() 则是单向DES加密,适合于密码存储。相反, base64_encode() urlencode() 这类方法,如网络传输时常用,通过MIME BASE64编码便于跨平台传输,但它们是可逆的,有对应的解密函数如 base64_decode()

接着,我们来看两个实际应用中的加密函数示例。一是 lock_url() ,它巧妙地结合了URL编码和特殊字符的处理,通过算法将输入的字符串加密后进行传输。另一个是经过精简的加密函数,如 passport_encrypt() ,同样采用编码和密钥操作,确保数据在传输中的安全性。

在项目中,更为复杂的加密处理可能涉及使用如 authcode() 这样的自定义函数。它根据输入的明文、操作类型(加密或解密)和密钥,生成动态密钥并执行加密核心算法。这种功能在用户登录验证和API数据交换中尤为常见。

最后,让我们探索一种更为灵活的加密解密模式。通过定义函数如 encrypt() ,我们可以使用MD5作为密钥生成器,并结合Base64编码,实现了双向操作。这个例子展示了如何对字符串进行加密和解密,以满足不同的应用场景。

在你的PHP开发旅程中,选择哪种加密方法取决于具体需求。不可逆的哈希函数适用于验证数据完整性,而可逆的编码方法适用于数据交换。记住,每个项目都有其特定的安全要求,选择适合的加密策略至关重要。

在追求安全的同时,不要忘记关注我们的公众号:PHP从入门到精通,那里有更多进阶知识和实用资源,帮助你提升技能,解决进阶问题。无论你是新手还是资深开发者,这里都有适合你的内容。一起探索PHP的无限可能,提升你的技术实力。

php同一个明文加密后如何得到不同的密文?而且这些密文解密后都是同一个明文!

php同一个明文加密后如何得到不同的密文?而且这些密文解密后都是同一个明文!

那加密时只能用不同的密钥才能获得不同的密文,而且解密时还得用之前的密钥,因此假如密文要存储的话,密钥也要跟着存储,否则就解密不了了!

看看我写的代码,加密和解密函数是从网上找的,在刷新页面时,会有几率出现乱码!你可以自己换,不过必须是可逆的。

<?php
$ming = 'zhonghuarenmingongheguo';

$iv = rand(1000, 9999); //密钥
$mi = encrypt($iv, $ming);
$jiemi = decrypt($iv, $mi);

echo '原文:'.$ming.'<br/>';
echo '加密:'.$mi.'<br/>';
echo '解密:'.$jiemi;

// 加密函数
function encrypt($key, $plain_text) {  
    $plain_text = trim($plain_text);  
    $iv = substr(md5($key), 0,mcrypt_get_iv_size (MCRYPT_CAST_256,MCRYPT_MODE_CFB));  
    $c_t = mcrypt_cfb (MCRYPT_CAST_256, $key, $plain_text, MCRYPT_ENCRYPT, $iv);  
    return trim(chop(base64_encode($c_t)));  
}
// 解密函数
function decrypt($key, $c_t) {  
    $c_t = trim(chop(base64_decode($c_t)));  
    $iv = substr(md5($key), 0,mcrypt_get_iv_size (MCRYPT_CAST_256,MCRYPT_MODE_CFB));  
    $p_t = mcrypt_cfb (MCRYPT_CAST_256, $key, $c_t, MCRYPT_DECRYPT, $iv);  
    return trim(chop($p_t));  
}
?>

参考: 我爱编程网

php同一个明文加密后如何得到不同的密文?而且这些密文解密后都是同一个明文!

php加密和解密的代码

我爱编程网(https://www.52biancheng.com)小编还为大家带来php加密和解密的代码的相关内容。

php提供的加密函数不只是有MD5,虽然MD5是用得最多的,因为其安全性相对较好。但是现在也有网站通过提供庞大的数据库来对其进行破解(比如 www.cmd5.com )。
除了MD5外,php还支持base64加密,这个函数可以进行解密,但是这种方式加密的结果并不是很安全,当然,如果要求不是很高的话,可以使用。进行base64加密的函数是:base64_encode($str);相反,对加密后的结果进行解密的函数是:base64_decode($str)。如:
<?php
$a="admin";
$b=base64_encode($a);
$c=base64_decode($b);
echo "加密前:\$a=",$a,"<br />";
echo "加密后:\$b=",$b,"<br />";
echo "解密后:\$c=",$c,"<br />";
?>
如果对这种方式得到的加密结果不满意,你可以对加密后或者加密前的字符串进行可逆处理(可逆是为了方便解密),然后在进行加密或者相关处理就可以了。
余下的自己搞定吧

以上就是我爱编程网整理的php同一个明文加密后如何得到不同的密文?而且这些密文解密后都是同一个明文!相关内容,想要了解更多信息,敬请查阅我爱编程网。更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“php同一个明文加密后如何得到不同的密文?而且这些密文解密后都是同一个明文!”相关推荐