C#代码加密字符串,与SQL加密结果不一致
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#代码加密字符串,与SQL加密结果不一致相关的知识,希望对你有一定的参考价值。
SQL2008数据库 VS2010 ;select hashbytes('SHA1', '123456') 返回值跟用C#代码计算的sha1值不同
这个什么情况?两边都改用MD5的话,结果还是不同。。。。。
--获取123456的MD5加密串
select hashbytes('MD5', '123456') ;
--获取123456的SHA1加密串
select hashbytes('SHA1', '123456') ;
有了这个函数可以在SQL Server中为字符串进行加密,但是HashBytes() 函数的返回结果是VarBinary类型(以 0x 开头 16 进制形式的二进制数据)。通常情况下,我们需要的都是字符串型的数据,很多人首先想到的可能就是用CAST或Convert函数将VarBinary转换为VarChar,但这样转换后的结果会是乱码,正确转换VarBinary可变长度二进制型数据到16进制字符串应该使用系统内置函数sys.fn_VarBinToHexStr()或sys.fn_SqlVarBaseToStr(只在sqlserver2005以后的有),如下所示:
select sys.fn_VarBinToHexStr(hashbytes('MD5', '123456'))
然后就可以截取需要的部分:
set right(sys.fn_VarBinToHexStr(hashbytes('MD5','123456')),32)
为MD5加密串。 参考技术B 为什么必须要相同呢?只要一边有此功能足矣。
php的3des加密结果与java不一致
php的3des加密结果与java不一致 密钥我知道 是32位 16进制的字符串 mcrypt拓展也都已经打开 就是不知道是哪的问题 怎么解决 求大仙们帮助
这个曾经研究过一点,如果你有php段完整的加密源代码,那么还是有可能做到结果一致的,否则很难,因为虽然都叫3des,但里面却有多种算法,比如php加密时是否使用了向量等等追问我们用的模式(ecb)都是一样的 而且什么叫完整的加密代码 从哪地方有完整的代码
追答一般加密过程会由几个主要方法组成,就是要有这些源代码,比如明文数据作为参数传入加密方法后,先怎么样,后怎么样,什么时候调用Hex等等
参考技术A 这个曾经研究过一点,如果你有php段完整的加密源代码,那么还是有可能做到结果一致的,否则很难,因为虽然都叫3des,但里面却有多种算法,比如php加密时是否使用了向量等等 参考技术B 不同软件的加密算法是不同的,各个软件的默认算法都不一样,选项再类似也是不一样的,这是正常的,一般加密过程会由几个主要方法组成,就是要有这些源代码,比如明文数据作为参数传入加密方法后,先怎么样,后怎么样,什么时候调用Hex等等。 参考技术C 不同软件的加密算法是不同的,各个软件的默认算法都不一样,选项再类似也是不一样的,这是正常的 参考技术D 密钥一样但des的S盒是一样的吗?以上是关于C#代码加密字符串,与SQL加密结果不一致的主要内容,如果未能解决你的问题,请参考以下文章