快3网上购买

mssql2008 base64_sqlserver2008安装环境_mssqlserver教程

电脑杂谈  发布时间:2017-06-19 04:06:17  来源:网络整理

最近由于工作需要,要将BIEE与公司现有的ERP系统做集成,使用外部表的方式。mssql2008 base64

快3网上购买现有系统基于.Net平台,为SQL Server 2008 R2,用户密码采用先算MD5在转Base64的方式存于中。

代码逻辑如下

byte[] byteString = null;
MD5 md5 = MD5.Create();
byteString = md5.ComputeHash(Encoding.Unicode.GetBytes(Str));
md5.Clear();
string NewStr = Convert.ToBase64String(byteString);

Encoding.Unicode.GetBytes(Str)这句为最关键的部分,其作用是把Str转换成了Unicode字节数组,正是这里给整个工作带来了困难!因为本人不懂C#,所以不知道C#里的Unicode是使用的UTF16LE(小头),而非常见的UTF16BE(大头)。SQL Server 里的Nvachr应该也是采用的是UTF16LE,而Oracle里的NVarchar2则是采用的UTF16BE,正是因为这点导致MD5出来的串不一致!

对于qaz123三者的输出分别为:

Oracle:

SQL> select utl_raw.cast_to_varchar2(utl_encode.base64_encode(GET_MD5('qaz123'))) from dual;
 
UTL_RAW.CAST_TO_VARCHAR2(UTL_E
--------------------------------------------------------------------------------
NPhcqA7DU9MFK4otOXOgxQ==

SQL Server:

select dbo.f_ToBase64(hashbytes('MD5',convert(NVARCHAR,'qaz123'))) 

LwUQYUuskyOhnZXD8WUh8Q==

C#:

LwUQYUuskyOhnZXD8WUh8Q==

Oracle的字符集为AL32UTF8、SQL Server的字符集为GBK

由于qaz123在UTF8和UTF16下的编码都一样所以就算我在Oracle下把qaz123转换成UTF16,其最终结果还是不是预期的,如下:

select utl_raw.cast_to_varchar2(utl_encode.base64_encode(GET_MD5(N'qaz123'))) from dual;
 
UTL_RAW.CAST_TO_VARCHAR2(UTL_E
--------------------------------------------------------------------------------
NPhcqA7DU9MFK4otOXOgxQ==

快3网上购买直到我把其转为UTF16LE,结果才和C#中的一样

注:Oracle中的UTF16默认为UTF16BE

select utl_raw.cast_to_varchar2(utl_encode.base64_encode(GET_MD5(convert('qaz123','AL16UTF16LE')))) from dual;
 
UTL_RAW.CAST_TO_VARCHAR2(UTL_E
--------------------------------------------------------------------------------
LwUQYUuskyOhnZXD8WUh8Q==


本文来自电脑杂谈,转载请注明本文网址:
http://www.kadakong.com/a/jisuanjixue/article-53637-1.html

相关阅读
发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

冠军彩票开奖 北京快3 万发彩票官网 快3投注 快3网上投注 状元彩票平台 快3平台 万发彩票开奖 快3在线投注 快三平台