2011-11-27 93 views
0

我知道如何加密測試,但我不知道如何解密它。如何解密c中的字符串

任何人都可以請我說我該怎麼做。

我使用的加密字符串的代碼是

string encoded = Convert.ToBase64String(Encoding.Unicode.GetBytes("USERNAME")); 
string decript = Convert.ToString(encoded); 
Decrypt(encoded); 

我不知道如何解密。

+6

Pedanticism:這不是加密和解密,這是編碼和解碼。 – millimoose

+4

你的例子中沒有加密,只有編碼。 – CodesInChaos

+2

推論是,如果你依靠base64編碼來保持用戶名是祕密的,那麼你的整個方法都是錯誤的。 – millimoose

回答

6

首先,你不是加密而是編碼。加密通常使用密鑰(或公/私鑰對),以便只有持有密鑰的人才能解密加密的消息。如果您知道使用的算法,則編碼是可逆的。編碼不應該用作加密的替代品;它不安全。第二,你只需要使用你用來編碼的Convert方法的兩個反轉過程即可。

string decoded = Encoding.Unicode.GetString(Convert.FromBase64String(encoded)); 
+0

謝謝它的工作正常 –

5

Base64不是「加密」 - 它只是一種將任意二進制數據表示爲完全ASCII字符串的方式。

Convert.ToBase64String反向簡直是Convert.FromBase64String,但你明白,這是不是的加密技術是很重要的。 (這也值得思考爲什麼你有中間線 - 當你傳遞一個字符串時,你期望Convert.ToString做什麼?)

1

該代碼被用來從編碼的Base64 /解碼字符串/:

string inputText = "This is some text."; 
byte [] bytesToEncode = Encoding.Unicode.GetBytes (inputText); 

string encodedText = Convert.ToBase64String (bytesToEncode); 

byte [] decodedBytes = Convert.FromBase64String (encodedText); 
string decodedText = Encoding.Unicode.GetString (decodedBytes);