很简单,就是这样。byte[] bytePwd = System.Text.Encoding.Default.GetBytes(password);password = System.Text.Encoding.Default.GetString(sha1.ComputeHash(bytePwd));同样的机器,不知道是这个Encoding.Default的问题还是什么问题,我用ASCII、Unicode、UTF7、UTF8编码都试过,都得不到.net 1.1 中的加密后的密码。
1.1中已经有数万用户了,该怎么办才好呢?关键问题:相同的字串在2.0中如何才能得到老系统1.1中的加密结果
原贴:http://community.csdn.net/Expert/topic/4949/4949111.xml?temp=.357052
1.1中已经有数万用户了,该怎么办才好呢?关键问题:相同的字串在2.0中如何才能得到老系统1.1中的加密结果
原贴:http://community.csdn.net/Expert/topic/4949/4949111.xml?temp=.357052
解决方案 »
- 框架怎么了 有缝
- 急。昨天好好的页面,今天运行直接是该页无法显示。或者是访问的页面不存在。GridView不绑定数据就可以显示。
- 解决页面加载超时的问题
- mschart x轴最右边的坐标不见了
- 求一功能齐全的html+editor
- repeater模板列绑定datagrid
- 写入数据库字符类型1978-10-1的时候出现10 1 1978 12:00AM
- 一个简单问题!急需请教阿。
- 如何让页面不随浏览器大小改变而改变?
- 新手求教新建项目的问题
- <%# DataBinder.Eval(Container.DataItem, "文件") %> 如何在代码端改变 该段绑定 的颜色和字体。。(注)不是在Html页面中编写代码?
- IFRAME的问题
这样也是不行的,不过还是谢谢
byte[] bytePwd = System.Text.Encoding.GetEncoding("gb2312").GetBytes(password);
password = System.Text.Encoding.GetEncoding("gb2312").GetString(sha1.ComputeHash(bytePwd));
GB2312, 可能问题出在sha1上哟
并不是字符编码,直接用来GetString会丢失数据的,得到的是不可预知的值二进制值转字符串一般是用16进制
每个byte转为两位字符串
___________________________________________________________________
string sResult = "";
foreach(byte b in result)
{
sResult += Convert.ToString(b,16);
}
string sResult = "";
foreach(byte b in result)
{
sResult += Convert.ToString(b,16);
}全变成数字和英文的码了啊,我的.net1.1的用户系统不升级2.0的话用了1年也没有出过问题呢。
2.0加密后有些密码会短一点
散列加密,就是转为16进制字符串的,0-9 A-F我是说
你原来系统
password = System.Text.Encoding.Default.GetString(sha1.ComputeHash(bytePwd));
这一句应该改成那样,就不会出问题了对你的问题我没有办法
1.1从Byte数组到Char数组,再到String的转换过程,
尤其是对非字符编码字节是怎么处理的
如果微软没有公开这个过程的处理方式而且没有其它途径得到这个处理方式
那神仙也没有办法了2.0中的处理方式可能不一样了
而能转换的,也是碰巧是个字符编码而已你(int)强制转换一下看一下它的编码吧
SHA1 sha1=new SHA1CryptoServiceProvider();
string pwd="123456";
string rtnPwd="";
byte[] bytePwd = System.Text.Encoding.UTF8.GetBytes(pwd);
rtnPwd=BitConverter.ToString(bytePwd).Replace("-","");
都返回:313233343536
string pwd = "abc@123";
string rtnPwd = "";
byte[] bytePwd = System.Text.ASCIIEncoding.ASCII.GetBytes(pwd);
byte[] bytepwd2 = sha1.ComputeHash(bytePwd);
rtnPwd = BitConverter.ToString(bytepwd2).Replace("-", "");
返回:
DDAC418A1BE76098D01107464026F65D2A3192BF