2015-09-20 105 views
4

將「隨機字節」轉換爲字符串時,我應該使用base64_encode還是bin2hex有什麼區別?Base64編碼或bin2hex隨機字符串

$bytes = openssl_random_pseudo_bytes(32); // alternatively read from /dev/urandom 

echo base64_encode($bytes); // some 44 character string 
echo bin2hex($bytes); // some 64 character string 

要用作鹽bcrypt,顯然修改base64是正確的選擇,因爲這是預期的。但是對於諸如帳戶註冊確認密鑰或唯一的非順序對象標識符這樣的上下文,這是正確的選擇?

我知道random_compat library,但這也是爲了學習的目的。

回答

4

除了長度?不是真的。它們都是相同數據的表示。這個選擇由你。

但要記住:

  • Base64編碼數據可以包含字符+/=,這可能需要URL編碼。

  • 由於Base64數據可能包含任何字母數字字符,因此有一個輕微的可能會包含令人反感的單詞。 (這在技術上也可以用十六進制編碼的數據,但不太常見,因爲它只使用字母A到F.)