我想加密数据库中的地址,它保存没有异常,但是当我在加载时解密地址时它会出错:
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);
}
}
答案 0 :(得分: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 将是&#34; MTIzIEFueSBTdHJlZXQsIEFUESBDaXR5LCBBbnkgU3RhdGUgOTk5OTksIFVTQQ ==&#34;。我假设你将它存储在你的数据库中。
在解码方面:
byte[] bytesD = Convert.FromBase64String(sData);
//If you have your decryption program, you now pass bytesD to it.
string address = UTF8Encoding.UTF8.GetString(bytesD);
地址现在将是&#34; 123 Any Street,Any City,Any State 99999,USA&#34;
sData 必须是正确终止的有效Base64编码字符串,否则Convert.FromBase64String将产生异常。
请注意,如果您没有加密代码,则以上提供零安全性。