2010-06-02 36 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