利用JAVASCRIPT HMAC-MD5算法增强用户的密码安全

本文介绍了一种使用HMACMD5算法实现用户密码的安全管理方案,包括注册、修改及验证流程。通过客户端与服务器端的配合,确保密码在传输过程中的安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用HMAC MD5算法实现用户密码的注册、修改及验证

 

1. 用户注册

1.1 用户注册FORM

    包含用户名(username)、密码(password)、重复密码(confirm_password)、图形验证码(imgcode)。在submit时进行下面的计算:

    password.value = hex_hmac_md5(username.value, password.value)

    confirm_password.value = hex_hmac_md5(username.value, confirm_password.value)

1.2 服务器端注册处理

    判断图形码是否正确,用户名是否重复。如果都正常则将username和password保存在数据库中。这时数据库中实际保存的是hex_hmac_md5(username, password)的值。其中图形验证码是防止恶意注册。

 

2. 修改密码

 

2.1 用户修改密码FORM

    包含用户名(username)、原密码(old_password)、新密码(new_password)、重复密码(confirm_password)、图形验证码(imgcode)。在submit时进行下面的计算:

    old_password.value = hex_hmac_md5(username.value, old_password.value)

    new_password.value = hex_hmac_md5(username.value, new_password.value)

    confirm_password.value = hex_hmac_md5(username.value, confirm_password.value)

    

2.2 服务器端修改密码处理

    判断图形码是否正确,并且判断new_password与confirm_password是否相同。如果都正常则判断old_password是否同数据库保存的密码相同,如果相同则将数据库中的密码修改为new_password。图形验证码是防止暴力破解。

 

3 登录验证

3.1 用户登录FORM

包含用户名(username)、服务器时间戳(server_timestamp)、服务器一次性令牌(nonce=hex_hmac_md5(server_timestamp, client_ip+client_port))、密码(password)。在submit时进行下面的计算:

    password.value = hex_hmac_md5(hex_hmac_md5(username.value, password.value), nonce.value)

3.2 服务器端登录处理

    验证时间戳在5分钟之内且nonce没有用过。hex_hmac_md5(数据库中的密码, nonce)要等于password.value。如果都成立则成功登录,删除Session中的nonce。否则重新取时间戳、生成nonce让用户重新登录。

4 不足之处

    注册与修改密码仍然会在网上传播HASH值。为了更进一步的安全,要对HASH值进行加密传输。结合AES算法,能够进一步保证HASH值的安全。另外如果注册同修改密码用HTTPS,就省力很多。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值