2011-11-27 31 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);