我已将我的字符串编码为Base64表示并将其存储在sql 2012的db中的VARCHAR(MAX)列中。
现在我正在尝试使用此解码值:
Declare @FMoney varchar(max)
Set @FMoney= (Select FinancialMoney from AppliedWorks aw
where AppliedWorkID= 20082)
SELECT CAST( CAST( @FMoney as XML ).value('.','varbinary(max)') AS varchar(max) )
但它没有给我原始值并给出了另一个base64字符串。
注意:存储在db中的值是通过C#.net编码并发送到db( anhhZWRzaGFzYjJuenVka2J1aWRqcjM1fDE1LjAw ),但解码应该在sql中执行。
C#编码:
public static String Encrypt(string strData)
{
if (strData != "")
{
strData = string.Format("{0}|{1}", HttpContext.Current.Session.SessionID, strData);
SHA1Managed shaM = new SHA1Managed();
Convert.ToBase64String(shaM.ComputeHash(Encoding.ASCII.GetBytes(strData)));
Byte[] encByteData;
encByteData = ASCIIEncoding.ASCII.GetBytes(strData);
String encStrData = Convert.ToBase64String(encByteData);
return encStrData;
}
else
{
return "";
}
}
更新:我还添加了c#.net的解码程序。
public static String Decrypt(string strData)
{
if (string.IsNullOrEmpty(strData) == false)
{
Byte[] decByteData;
decByteData = Convert.FromBase64String(strData);
String decStrData = ASCIIEncoding.ASCII.GetString(decByteData);
String[] SplitValue = decStrData.Split('|');
String ReturnValue = SplitValue[1];
return ReturnValue;
}
else
{
return "";
}
}
c#端适用于ENCODING和DECODING但我正在尝试做的是在c#中编码并在sql中解码。
答案 0 :(得分:1)
您错过了xs:base64Binary
声明
SELECT
功能
SELECT CAST( CAST( @FMoney as XML ).value('xs:base64Binary(.)','varbinary(max)') AS varchar(max) )
返回
jxaedshasb2nzudkbuidjr35|15.00