我是新加入這個加密的東西,所以我不確定如何格式化我的問題。MCRYPT模式正在產生斜線
反正我使用的框架調用kohana
和加密它使用了三件事情:
key
,cipher
,mode
所以我的問題是,當它有時編碼一些字符串我得到/
加密這樣fclzSev6DVfOk2Z/BSSi4dRYFn4t
和我不要這樣,所以我的猜測是,我應該改變mode
現在是MCRYPT_MODE_NOFB
所以如果我是正確的,我必須使用什麼模式?
我是新加入這個加密的東西,所以我不確定如何格式化我的問題。MCRYPT模式正在產生斜線
反正我使用的框架調用kohana
和加密它使用了三件事情:
key
,cipher
,mode
所以我的問題是,當它有時編碼一些字符串我得到/
加密這樣fclzSev6DVfOk2Z/BSSi4dRYFn4t
和我不要這樣,所以我的猜測是,我應該改變mode
現在是MCRYPT_MODE_NOFB
所以如果我是正確的,我必須使用什麼模式?
正如Francis Avila所說,加密輸出似乎是Base64-encoded,所以除了字母和數字之外,還可能包含斜槓和加號(最後可能還有等號)。
您可以安全地用其他東西代替這些標誌,只要您記得在解碼前更改它們。 PHP strtr()
function便於使用。例如,以下是如何將字符串從常規Base64轉換爲RFC 4648 URL安全Base64變體和後退:
$url_safe_base64 = strtr($base64_string, "+/", "-_");
$base64_string = strtr($url_safe_base64, "-_", "+/");
mode
與生成的輸出是否具有斜線完全無關,但指定應使用哪種加密模式mcrypt
。如果您不知道使用默認設置是什麼。
有斜線的原因是Kohana的encode()
方法將編碼base64中可能包含斜槓的加密二進制輸出。
你可以str_replace()
與其他東西的斜槓,但這可能會創造更多的問題和頭痛比它解決。
是的,我想如果我會替換斜線後我會有很多問題解碼它 – Linas 2012-01-15 19:56:00
爲什麼不要斜槓? – 2012-01-15 19:31:27
,因爲我在我的網址中使用加密的字符串,如果有斜線,它會爲我的get方法創建額外的參數,並且基本上它變得混亂了 – Linas 2012-01-15 20:08:02
然後urlencode它,就像你需要在URL中編碼的任何其他東西。 – 2012-01-15 20:15:03