0

我想加密数据库中的地址,它毫无例外地保存,但是当我在加载时解密地址时它给出了错误:

Unable to load information. Possible reason: Error in DecodeInvalid length for a Base-64 char array. 

<asp:TextBox ID="txtAddress" runat="server" Width="200px" />
<ajaxToolkit:FilteredTextBoxExtender ID="ftxtAddress" runat="server" TargetControlID="txtAddress"
FilterType="Custom,Numbers, LowercaseLetters" InvalidChars="!@#$%^&*()~`*-/+|\}{[]<>?" ValidChars=",.?-_ " />

我用:

public string Decode(string sData)
{
  try
  {
    System.Text.UTF8Encoding encoder = new System.Text.UTF8Encoding();
    System.Text.Decoder utf8Decode = encoder.GetDecoder();

    byte[] todecode_byte = Convert.FromBase64String(sData);
    int charCount = utf8Decode.GetCharCount(todecode_byte, 0, todecode_byte.Length);
    char[] decoded_char = new char[charCount];
    utf8Decode.GetChars(todecode_byte, 0, todecode_byte.Length, decoded_char, 0);
    string result = new String(decoded_char);
    return result;
  }
  catch (Exception e)
  {
    throw new Exception("Error in Decode" + e.Message);
  }
}
4

1 回答 1

1

在编码方面:

string rawText = "123 Any Street, Any City, Any State 99999, USA";
byte[] bytesE =  UTF8Encoding.UTF8.GetBytes(rawText);
//If you have your encryption code and it outputs a byte array, pass that to bytesE
string sData = Convert.ToBase64String(bytesE);

sData然后将是“MTIzIEFueSBTdHJlZXQsIEFueSBDaXR5LCBBbnkgU3RhdGUgOTk5OTksIFVTQQ==”。我假设您然后将其存储在您的数据库中。

在解码方面:

byte[] bytesD = Convert.FromBase64String(sData);
//If you have your decryption program, you now pass bytesD to it.
string address = UTF8Encoding.UTF8.GetString(bytesD);

地址现在将是“123 Any Street, Any City, Any State 99999, USA”

sData必须是正确终止的有效 Base64 编码字符串,否则 Convert.FromBase64String 将产生异常。

请记住,如果您没有加密代码,则上述提供的安全性为零。

于 2012-05-11T09:00:51.980 回答