为什么使用base64解码不能在C#中正常工作

时间:2014-11-18 11:30:31

标签: c# base64 decode encode

我有两种方法“EncodePassword”和“DecodePassword”如下:

// Pass the password as a string, then return the encoded password
string EncodePassword(string password)
{
    return Convert.ToBase64String(Encoding.UTF8.GetBytes(password));
}

// Pass the encoded password, then return that as a string
string DecodePassword(string password)
{
    return Encoding.UTF8.GetString(Convert.FromBase64String(password));
}

EncodePassword方法工作正常,但DecodePassword方法没有! 因此,例如当我尝试编码“testpassword”时,结果是“dGVzdHBhc3N3b3Jk”,但是当我尝试解码“dGVzdHBhc3N3b3Jk”时,结果会出现一些像“ - , ”这样的问号。 /> 请问有什么问题?

1 个答案:

答案 0 :(得分:0)

代码按预期工作。首先加载字符串一定有问题 - 或者在处理生成的字符串时搞乱编码。

[TestMethod]
public void EncodeAndDecodePwd()
{
  const string pwd = "testpassword";
  string encodedPassword = EncodePassword(pwd);
  string decodedPassword = DecodePassword(encodedPassword);
  string decodedPassword2 = DecodePassword("dGVzdHBhc3N3b3Jk");
  Assert.AreEqual(pwd, decodedPassword);
  Assert.AreEqual(pwd, decodedPassword2);
  Assert.AreEqual(encodedPassword, "dGVzdHBhc3N3b3Jk");
}

BR