2011-09-07 46 views
0

我正在使用base64_encode函數對字符串進行散列。字符串必須是a-zA-Z0-9,有時base64_encode在末尾輸出=符號(有時是兩次)。php base64_encode不帶=號

什麼是最有效的方式來改變base64_encode函數(覆蓋?)以省略=符號?

+0

此外:我的程序不需要將字符串解碼回原始形式 – Tom

+2

爲什麼你會'base64'-編碼你不想再次解碼的東西?也許散列函數(如'md5'或'sha1')可能更適合這裏。 –

+0

那麼也許你需要一些散列函數呢? –

回答

5

可能的= s最後是要求如果你想稍後解碼值。而且,字符集a-zA-Z0-9僅具有62個值,因此編碼值不能適合其內部。

更新:如果您需要散列字符串,爲什麼不使用散列函數?除非應用程序對安全敏感,否則md5應該是一個很好的解決方案,在這種情況下應該使用更強的散列(sha1或更高)。

+0

我剛剛在評論中添加了這一點。我知道有人會指出:) – Tom

+2

@Tom:你仍然需要考慮其他兩個字符(我相信使用'/'和'+')。如果你打算破壞它的輸出,爲什麼使用'base64_encode'?也許其他一些工具更適合這項任務?你究竟想要完成什麼? – Jon

+0

我只需要散列unicode字符串 – Tom

1

由於Jon說你需要=來解碼它,但是根據你所說的你不需要那樣做,在這種情況下你最好用md5來代替,這會給你一個32個字符的AF/0- 9字符串。