首页 新闻 会员 周边

MD5加密 单向加密问题

0
悬赏园豆:5 [已解决问题] 解决于 2013-07-31 15:57

用MD5算法加密数据库用户密码:

Dim md5 As MD5CryptoServiceProvider
Dim bytValue() As Byte '要进行加密的字节数组
Dim bytHash() As Byte '加密后生成的字节数组
Dim result As String
md5 = New MD5CryptoServiceProvider
' 将原始字符串转换成字节数组
bytValue = System.Text.Encoding.UTF8.GetBytes(password)
' 计算散列,并返回一个字节数组
bytHash = md5.ComputeHash(bytValue)
md5.Clear()
' 字节数组转换成字符串
result = Convert.ToBase64String(bytHash)

这种方法可以实现加密存储,由于MD5是单向加密的,所以考虑到在修改用户信息或者登录系统的时候可以对密码加密后再去比对……

但是现在问题也就出在这个地方,假设数据库中没有用户信息,那该怎么办?第一个登录系统的人该如何操作……事先往数据库中添加一条信息,可以登录时会对密码进行单向的MD5加密,所以登录验证会失败,不能成功登录!

 

希望各位大神指导一下……

MD5
xymaqingxiang的主页 xymaqingxiang | 初学一级 | 园豆:149
提问于:2013-07-30 09:29
< >
分享
最佳答案
1

数据库中没有用户信息?你亦可以再业务逻辑处理一下这种情况的存在,假如存在对吧!那你可以数据库默认一个匿名用户啊!让这个用户采用匿名用户登录即可!

收获园豆:3
Beyond-bit | 老鸟四级 |园豆:2885 | 2013-07-30 09:43

您的意思是先进行用户表用户数目的判断,假设用户数目为0,则可以匿名登录并存储……

xymaqingxiang | 园豆:149 (初学一级) | 2013-07-30 09:47

@xymqx: 用已核对密码……但第一个用户怎么验证登录,该如何处理?

我不解你这个意思是神马?假设你的数据现在的用户密码都是MD5过的,然后还没有用户登录过!现在我要登录你的系统!我只需要输入我的username+password 即可啊!然后你业务逻辑的处理肯定是拿着我的username+password去查数据库是否存在,false 则不允许进入,true则进去!

 

不知道你的需求是如何?

Beyond-bit | 园豆:2885 (老鸟四级) | 2013-07-30 09:51

那请问该如何判断用户表是否为空呢……数据库返回值(想获得操作影响行数等)那块很模糊……

求指导!

xymaqingxiang | 园豆:149 (初学一级) | 2013-07-30 09:52

@xymqx: 你意思:假如用户输入的根本不存在是吧?那你可以根据数据库的返回值来判断是否存在,存在登陆,反之则不能登陆!

还有一种办法就是你可以通过捕获异常来解决!就是用户输入不存在的你引发一个异常!提示用户不存在!

Beyond-bit | 园豆:2885 (老鸟四级) | 2013-07-30 09:59
其他回答(2)
0

如果同意用户在未注册的情况下登录系统,可以在用户登录时进行判断用户是否存在,如果不存在,就新增一条数据,保存用户名,保存加密密码,当用户第二次进行登录的时候,自然就可以作出对比了

收获园豆:2
KivenRo | 园豆:1734 (小虾三级) | 2013-07-30 09:34

想的是登录、退出系统的时候都要进行身份的验证~~~

支持(0) 反对(0) xymaqingxiang | 园豆:149 (初学一级) | 2013-07-30 09:41

@xymqx: 如果数据库中没有这条数据,你如何验证,用什么作对比,所以首先要保证有这个数据,然后你才能进行各种操作啊,至于退出系统你还要做什么验证,最多也就输入一个验证码,如果你加上验证,用户操作起来如果感觉麻烦,不用正常退出,直接关闭程序或浏览器得了

支持(0) 反对(0) KivenRo | 园豆:1734 (小虾三级) | 2013-07-30 10:07
0

匿名登录,或者现在数据库添加一条数据,利用select count(*).....where password= 加密后的密码,如果计数大于0,表示有此用户,可以登录

雾里小梅花 | 园豆:137 (初学一级) | 2013-07-30 22:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册