2012-01-15 84 views
3

我是新加入這個加密的東西,所以我不確定如何格式化我的問題。MCRYPT模式正在產生斜線

反正我使用的框架調用kohana和加密它使用了三件事情:

keyciphermode所以我的問題是,當它有時編碼一些字符串我得到/加密這樣fclzSev6DVfOk2Z/BSSi4dRYFn4t和我不要這樣,所以我的猜測是,我應該改變mode現在是MCRYPT_MODE_NOFB所以如果我是正確的,我必須使用什麼模式?

+1

爲什麼不要斜槓? – 2012-01-15 19:31:27

+0

,因爲我在我的網址中使用加密的字符串,如果有斜線,它會爲我的get方法創建額外的參數,並且基本上它變得混亂了 – Linas 2012-01-15 20:08:02

+3

然後urlencode它,就像你需要在URL中編碼的任何其他東西。 – 2012-01-15 20:15:03

回答

5

正如Francis Avila所說,加密輸出似乎是Base64-encoded,所以除了字母和數字之外,還可能包含斜槓和加號(最後可能還有等號)。

您可以安全地用其他東西代替這些標誌,只要您記得在解碼前更改它們。 PHP strtr() function便於使用。例如,以下是如何將字符串從常規Base64轉換爲RFC 4648 URL安全Base64變體和後退:

$url_safe_base64 = strtr($base64_string, "+/", "-_"); 

$base64_string = strtr($url_safe_base64, "-_", "+/"); 
2

mode與生成的輸出是否具有斜線完全無關,但指定應使用哪種加密模式mcrypt。如果您不知道使用默認設置是什麼。

有斜線的原因是Kohana的encode()方法將編碼base64中可能包含斜槓的加密二進制輸出。

你可以str_replace()與其他東西的斜槓,但這可能會創造更多的問題和頭痛比它解決。

+0

是的,我想如果我會替換斜線後我會有很多問題解碼它 – Linas 2012-01-15 19:56:00