2012-08-04 24 views
1

PBEWithMD5AndDES和Base64編碼提供的加密字符串是否可以包含CR和/或LF字符?PBEWithMD5AndDES加密生成的CR/LF?

+0

Xarph問題沒有問題,但請指定具體的語言/ API,儘可能多地包含標籤,並在問題主體的某個地方使用問號。 – 2012-08-05 14:25:16

回答

0

我在Andorid SDK中使用java。我發現命令:

String s = Base64.encodeToString(enc, Base64.DEFAULT); 

做了換行。它將LF字符放入輸出字符串中。

我發現:

String s = Base64.encodeToString(enc, Base64.NO_WRAP); 

沒有把LF字符到輸出字符串。

3

Base64只能打印字符。但是,當它用作電子郵件的MIME類型時,它將被拆分成由CR-LF分隔的行。

+0

你的答案當然是正確的(所以+1),但我已經創建了一個更深入的問題的答案。 – 2012-08-05 14:20:51

1

PBEWithMD5AndDES返回二進制數據。 PBE加密在PKCS#5 standard內定義,並且此標準沒有專用的base 64編碼方案。所以問題就變成了你需要Base 64編碼二進制數據的系統。維基百科有一個解釋各種形式的nice section within the Base 64 article

您可能會遇到一個返回Base 64的PBE實現,並且實現沒有提及使用上述哪個方案。在這種情況下,您需要以某種方式找出使用哪種方案。我會建議搜索它,詢問社區,查看源代碼或者全部失敗,在輸出中創建一組測試。

幸運的是,如果您正在解碼base 64並且您忽略了所有的空白區域,那麼您是非常安全的。請注意,某些實現忽略了填充,所以如果適用,請在解碼之前添加它。

如果你自己進行編碼基地64,我會強烈建議不輸出任何空白,只能使用默認的字母(與'+''/'標誌),並在需要時總是進行填充。之後,您可以隨時拆分結果並替換任何非標準字符(特別是'+''/'標誌當然),或刪除填充。