为什么 BASE64 字符串在 sql 2012 中没有被解码?
Why BASE64 string is not getting decoded in sql 2012?
我已将我的字符串编码为 Base64 表示并将其存储在 sql 2012 数据库的 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.[=14 中执行=]
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# 端在编码和解码方面工作正常,但我正在尝试做的是在 C# 中编码并在 sql 中解码。
您缺少 SELECT
语句中的 xs:base64Binary
函数
SELECT CAST( CAST( @FMoney as XML ).value('xs:base64Binary(.)','varbinary(max)') AS varchar(max) )
returns
jxaedshasb2nzudkbuidjr35|15.00
我已将我的字符串编码为 Base64 表示并将其存储在 sql 2012 数据库的 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.[=14 中执行=]
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# 端在编码和解码方面工作正常,但我正在尝试做的是在 C# 中编码并在 sql 中解码。
您缺少 SELECT
语句中的 xs:base64Binary
函数
SELECT CAST( CAST( @FMoney as XML ).value('xs:base64Binary(.)','varbinary(max)') AS varchar(max) )
returns
jxaedshasb2nzudkbuidjr35|15.00