2016-12-28 167 views
-1

我有這樣的:Base64編碼爲base64,

byte[] data = Encoding.ASCII.GetBytes("foobar"); 
var base64_text = Convert.ToBase64String(data); 
Console.WriteLine(base64_text); 

上面的代碼工作完美,但我有一個問題。編程的方式是否可以將編碼的字符串再次編碼成2個編碼的字符串?

但是,如果你試圖解密它們,它會導致相同和普通的文本。如果是,那麼請提供代碼並指導他們。如果否,請解釋。最後,如果我使用base64多次解碼(比方說100),是否有可能?尺寸會增加嗎?我不是這樣做的一個主要方式來加密的東西(只是爲了讓人們知道)。

+1

您可以根據需要對結果進行多次Base64編碼,但您必須解碼結果sa我的次數。 –

+1

Base64與加密無關。這是一種字符編碼,可將輸出字符串中的字符限制爲可打印字符。它通常用於對二進制數據進行編碼,以便可以通過僅字符傳輸協議進行發送。 – Kevin

+0

加密需要(祕密)密鑰,解碼不需要。如果您沒有在某處輸入密鑰,則不會進行加密。你只需要編碼數據一次,因爲它用於從一種格式(字節)到另一種(文本字符串)。維基百科清楚地描述了基地64的工作原理,包括規模的增加。 -1沒有查找基本信息或嘗試自己。 –

回答

0

你已經做的一切,你需要這個嘗試自己:

byte[] data = Encoding.ASCII.GetBytes("foobar"); 
var base64_text = Convert.ToBase64String(data); 
Console.WriteLine(base64_text); 

data = Encoding.ASCII.GetBytes(base64_text); 
base64_text = Convert.ToBase64String(data); 
Console.WriteLine(base64_text); 

你會看到數據的變化和增長每次執行的編碼時間,你可以想象你需要執行相同次數的解碼操作以獲取原始字符串。如前所述,無論Base64-多長時間一次將字符串編碼爲,它永遠都不會是一個體面的加密機制。例如,如果你改變開頭的原始字符串,東西將在開頭的的Base64編碼值中改變,無論你重複了多少次。

foobar編碼多達4次:

 
Zm9vYmFy 
Wm05dlltRnk= 
V20wNWRsbHRSbms9 
VjIwd05XUnNiSFJTYm1zOQ== 

doobar編碼多達4次:

 
ZG9vYmFy 
Wkc5dlltRnk= 
V2tjNWRsbHRSbms9 
VjJ0ak5XUnNiSFJTYm1zOQ== 

而等於字符經常出現在所述經編碼的結束時(===)字符串是您使用Base64的快速贈品。

+1

...和相當有限的字母表(使用的字符集)將是一個快速贈品,否則。 –

0

如果你想爲base64編碼字符串多次,你可以使用像這樣的代碼:

string text = "foobar"; 
for (int i = 0; i < 10; i++) 
{ 
    text = Convert.ToBase64String(Encoding.ASCII.GetBytes(text));  
    Console.WriteLine(text); 
} 
0

//只創建這些功能:

public string Encode (string EncodingText,int NumberOfTimesYouWantToEncode) 
    { 
     byte[] data; 
     string base64_text = EncodingText; 
     for (int i = 0; i < NumberOfTimesYouWantToEncode; i++) 
     { 
      data = Encoding.ASCII.GetBytes(base64_text); 
      base64_text = Convert.ToBase64String(data); 

     } 
     return base64_text; 
    } 


    public string Decode(string EncodingText, int NumberOfTimesYouNeedToDecode) 
    { 
     byte[] data; 
     string decodedString = EncodingText; 
     for (int i = 0; i < NumberOfTimesYouNeedToDecode; i++) 
     { 
      data = Convert.FromBase64String(decodedString); 
      decodedString = Encoding.ASCII.GetString(data); 
     } 
     return decodedString; 
    } 

//並調用這些功能如下所示:

string EncodedString= Encode ("foobar", 3); 
string DecodedString=Decode(EncodedString,3);