2010-06-02 75 views
2

寻找内置的加密函数,不要隐藏来自聪明的程序员的字符串,而只是为了混淆它。寻找功能,如str_rot13base64_encode,但我似乎无法找到任何。当然还有更多?什么是PHP“加密”功能?

+0

你需要多少个?我通常使用base64来模糊某些让我看着肩膀的人无法阅读的东西,比如'password = base64_decode('bXkgcGFzc3dvcmQ =');' – 2010-06-02 16:59:51

+0

@Johannes,这就是为什么我把'encryption'放在双引号中的原因;) – Rob 2010-06-02 17:05:28

+0

@Johannes:Rot-13是一种编码。加密需要一个密钥。 – 2010-06-02 17:19:37

回答

1

对于真正的加密,mcrypt是解决方案。对于混淆,第三个函数是uuencode;这里有一些解码代码;编码涉及颠倒顺序。

$text = str_rot13($text); 
$text = base64_decode($text); 
$text = convert_uudecode($text); 

请注意,base64_encode和convert_uudecode都会增加数据的大小。

3

你可能想看看mcrypt功能家族。它可以使用各种算法进行加密和解密。

-3

您正在寻找混淆算法,而不是加密算法?

Base 64和mcrypt是快速编码解码最容易的。如果你正在寻找混淆,使用这些。

Base 64和Rot 13不能加密,因为它们很容易被编码和解码。

加密函数更像md5,sha1和crypt。 MD5被认为是“破碎的”,所以你应该使用sha1进行加密,或者至少在散列时加密你的MD5。

http://ca2.php.net/md5

http://ca3.php.net/sha1

http://ca3.php.net/manual/en/function.crypt.php

+0

注意这里提到的函数(md5,sha1)是单向的;一旦编码,它们就不能被解码。 – eykanal 2010-06-02 17:06:34

+6

Oh sheesh y'all,**加密!=散列!=编码** ...您列出的函数(MD5,SHA1和crypt)是哈希/摘要函数,而不是加密函数。加密意味着可以使用某个密钥从加密消息确定性地解密原始输入。编码仅仅是一种消息格式向另一种消息格式的转换。 – 2010-06-02 17:14:04

1

如果你只需要一个模糊一点,尝试strtr()功能。它存在于换出字符串中的字符 - 非常适合制作可翻译的文本...但不可读。

简单的例子:

<?php 
$mytext="obfuscate me"; 
$obfuscated = strtr($mytext,"aeiourstlne","rstlneaeiou"); 
echo $obfuscated; /* Output is lbfnacreu mu */ 
?> 

一些进一步阅读here