首页 > 网站 > WEB开发 > 正文

JavaScript实现网页安全登录(转)

2024-04-27 14:21:17
字体:
来源:转载
供稿:网友

javaScript实现网页安全登录(转)

现在很多商业网站的用户登录都是明码传输的,而一般用户又习惯于所有帐号使用相同的密码来保存,甚至很多人使用的密码和自己的银行帐号都一样哦!所 以嘛还是有一定的安全隐患的,YAHOO的免费邮箱登录使用了md5的加密方法来确证服务提供方自己也无法知道用户的密码,有效维护了用户的隐私。其原理 如下:用户在注册的时候通过Javascript对密码进行一次MD5变换,然后发给服务器保存在数据库,因为MD5是无法逆向变换的所以可以保证服务商保护客户的隐私。当然如果要更高的保证这个变换后的密钥安全则建议使用HTTPS进行传输。在用户登录的时候服务器会给客户端发一个临时的challenge号码,客户根据这个challenge进行变换到服务器进行验证:MD5(MD5(passWord) + challenge)下面附一段小巧的javascript MD5算法:

Js代码Flashvars" value="clipboard=%3Cscript%20language%3D%22javascript%22%3E%0A%2F*%0A%20*%20A%20JavaScript%20implementation%20of%20the%20RSA%20Data%20Security%2C%20Inc.%20MD5%20Message%0A%20*%20Digest%20Algorithm%2C%20as%20defined%20in%20RFC%201321.%0A%20*%20Copyright%20(C)%20Paul%20Johnston%201999%20-%202000.%0A%20*%20Updated%20by%20Greg%20Holt%202000%20-%202001.%0A%20*%20See%20http%3A%2F%2Fpajhome.org.uk%2Fsite%2Flegal.html%20for%20details.%0A%20*%2F%0A%0A%2F*%0A%20*%20Convert%20a%2032-bit%20number%20to%20a%20hex%20string%20with%20ls-byte%20first%0A%20*%2F%0Avar%20hex_chr%20%3D%20%220123456789abcdef%22%3B%0Afunction%20rhex(num)%0A%7B%0A%20%20str%20%3D%20%22%22%3B%0A%20%20for(j%20%3D%200%3B%20j%20%3C%3D%203%3B%20j%2B%2B)%0A%20%20%20%20str%20%2B%3D%20hex_chr.charAt((num%20%3E%3E%20(j%20*%208%20%2B%204))%20%26%200x0F)%20%2B%0A%20%20%20%20%20%20%20%20%20%20%20hex_chr.charAt((num%20%3E%3E%20(j%20*%208))%20%26%200x0F)%3B%0A%20%20return%20str%3B%0A%7D%0A%0A%2F*%0A%20*%20Convert%20a%20string%20to%20a%20sequence%20of%2016-word%20blocks%2C%20stored%20as%20an%20array.%0A%20*%20Append%20padding%20bits%20and%20the%20length%2C%20as%20described%20in%20the%20MD5%20standard.%0A%20*%2F%0Afunction%20str2blks_MD5(str)%0A%7B%0A%20%20nblk%20%3D%20((str.length%20%2B%208)%20%3E%3E%206)%20%2B%201%3B%0A%20%20blks%20%3D%20new%20Array(nblk%20*%2016)%3B%0A%20%20for(i%20%3D%200%3B%20i%20%3C%20nblk%20*%2016%3B%20i%2B%2B)%20blks%5Bi%5D%20%3D%200%3B%0A%20%20for(i%20%3D%200%3B%20i%20%3C%20str.length%3B%20i%2B%2B)%0A%20%20%20%20blks%5Bi%20%3E%3E%202%5D%20%7C%3D%20str.charCodeAt(i)%20%3C%3C%20((i%20%25%204)%20*%208)%3B%0A%20%20blks%5Bi%20%3E%3E%202%5D%20%7C%3D%200x80%20%3C%3C%20((i%20%25%204)%20*%208)%3B%0A%20%20blks%5Bnblk%20*%2016%20-%202%5D%20%3D%20str.length%20*%208%3B%0A%20%20return%20blks%3B%0A%7D%0A%0A%2F*%0A%20*%20Add%20integers%2C%20wrapping%20at%202%5E32.%20This%20uses%2016-bit%20Operations%20internally%0A%20*%20to%20work%20around%20bugs%20in%20some%20JS%20interPReters.%0A%20*%2F%0Afunction%20add(x%2C%20y)%0A%7B%0A%20%20var%20lsw%20%3D%20(x%20%26%200xFFFF)%20%2B%20(y%20%26%200xFFFF)%3B%0A%20%20var%20msw%20%3D%20(x%20%3E%3E%2016)%20%2B%20(y%20%3E%3E%2016)%20%2B%20(lsw%20%3E%3E%2016)%3B%0A%20%20return%20(msw%20%3C%3C%2016)%20%7C%20(lsw%20%26%200xFFFF)%3B%0A%7D%0A%0A%2F*%0A%20*%20Bitwise%20rotate%20a%2032-bit%20number%20to%20the%20left%0A%20*%2F%0Afunction%20rol(num%2C%20cnt)%0A%7B%0A%20%20return%20(num%20%3C%3C%20cnt)%20%7C%20(num%20%3E%3E%3E%20(32%20-%20cnt))%3B%0A%7D%0A%0A%2F*%0A%20*%20These%20functions%20implement%20the%20basic%20operation%20for%20each%20round%20of%20the%0A%20*%20algorithm.%0A%20*%2F%0Afunction%20cmn(q%2C%20a%2C%20b%2C%20x%2C%20s%2C%20t)%0A%7B%0A%20%20return%20add(rol(add(add(a%2C%20q)%2C%20add(x%2C%20t))%2C%20s)%2C%20b)%3B%0A%7D%0Afunction%20ff(a%2C%20b%2C%20c%2C%20d%2C%20x%2C%20s%2C%20t)%0A%7B%0A%20%20return%20cmn((b%20%26%20c)%20%7C%20((~b)%20%26%20d)%2C%20a%2C%20b%2C%20x%2C%20s%2C%20t)%3B%0A%7D%0Afunction%20gg(a%2C%20b%2C%20c%2C%20d%2C%20x%2C%20s%2C%20t)%0A%7B%0A%20%20return%20cmn((b%20%26%20d)%20%7C%20(c%20%26%20(~d))%2C%20a%2C%20b%2C%20x%2C%20s%2C%20t)%3B%0A%7D%0Afunction%20hh(a%2C%20b%2C%20c%2C%20d%2C%20x%2C%20s%2C%20t)%0A%7B%0A%20%20return%20cmn(b%20%5E%20c%20%5E%20d%2C%20a%2C%20b%2C%20x%2C%20s%2C%20t)%3B%0A%7D%0Afunction%20ii(a%2C%20b%2C%20c%2C%20d%2C%20x%2C%20s%2C%20t)%0A%7B%0A%20%20return%20cmn(c%20%5E%20(b%20%7C%20(~d))%2C%20a%2C%20b%2C%20x%2C%20s%2C%20t)%3B%0A%7D%0A%0A%2F*%0A%20*%20Take%20a%20string%20and%20return%20the%20hex%20representation%20of%20its%20MD5.%0A%20*%2F%0Afunction%20MD5(str)%0A%7B%0A%20%20x%20%3D%20str2blks_MD5(str)%3B%0A%20%20var%20a%20%3D%20%201732584193%3B%0A%20%20var%20b%20%3D%20-271733879%3B%0A%20%20var%20c%20%3D%20-1732584194%3B%0A%20%20var%20d%20%3D%20%20271733878%3B%0A%20%0A%20%20for(i%20%3D%200%3B%20i%20%3C%20x.length%3B%20i%20%2B%3D%2016)%0A%20%20%7B%0A%20%20%20%20var%20olda%20%3D%20a%3B%0A%20%20%20%20var%20oldb%20%3D%20b%3B%0A%20%20%20%20var%20oldc%20%3D%20c%3B%0A%20%20%20%20var%20oldd%20%3D%20d%3B%0A%0A%20%20%20%20a%20%3D%20ff(a%2C%20b%2C%20c%2C%20d%2C%20x%5Bi%2B%200%5D%2C%207%20%2C%20-680876936)%3B%0A%20%20%20%20d%20%3D%20ff(d%2C%20a%2C%20b%2C%20c%2C%20x%5Bi%2B%201%5D%2C%2012%2C%20-389564586)%3B%0A%20%20%20%20c%20%3D%20ff(c%2C%20d%2C%20a%2C%20b%2C%20x%5Bi%2B%202%5D%2C%2017%2C%20%20606105819)%3B%0A%20%20%20%20b%20%3D%20ff(b%2C%20c%2C%20d%2C%20a%2C%20x%5Bi%2B%203%5D%2C%2022%2C%20-1044525330)%3B%0A%20%20%20%20a%20%3D%20ff(a%2C%20b%2C%20c%2C%20d%2C%20x%5Bi%2B%204%5D%2C%207%20%2C%20-176418897)%3B%0A%20%20%20%20d%20%3D%20ff(d%2C%20a%2C%20b%2C%20c%2C%20x%5Bi%2B%205%5D%2C%2012%2C%20%201200080426)%3B%0A%20%20%20%20c%20%3D%20ff(c%2C%20d%2C%20a%2C%20b%2C%20x%5Bi%2B%206%5D%2C%2017%2C%20-1473231341)%3B%0A%20%20%20%20b%20%3D%20ff(b%2C%20c%2C%20d%2C%20a%2C%20x%5Bi%2B%207%5D%2C%2022%2C%20-45705983)%3B%0A%20%20%20%20a%20%3D%20ff(a%2C%20b%2C%20c%2C%20d%2C%20x%5Bi%2B%208%5D%2C%207%20%2C%20%201770035416)%3B%0A%20%20%20%20d%20%3D%20ff(d%2C%20a%2C%20b%2C%20c%2C%20x%5Bi%2B%209%5D%2C%2012%2C%20-1958414417)%3B%0A%20%20%20%20c%20%3D%20ff(c%2C%20d%2C%20a%2C%20b%2C%20x%5Bi%2B10%5D%2C%2017%2C%20-42063)%3B%0A%20%20%20%20b%20%3D%20ff(b%2C%20c%2C%20d%2C%20a%2C%20x%5Bi%2B11%5D%2C%2022%2C%20-1990404162)%3B%0A%20%20%20%20a%20%3D%20ff(a%2C%20b%2C%20c%2C%20d%2C%20x%5Bi%2B12%5D%2C%207%20%2C%20%201804603682)%3B%0A%20%20%20%20d%20%3D%20ff(d%2C%20a%2C%20b%2C%20c%2C%20x%5Bi%2B13%5D%2C%2012%2C%20-40341101)%3B%0A%20%20%20%20c%20%3D%20ff(c%2C%20d%2C%20a%2C%20b%2C%20x%5Bi%2B14%5D%2C%2017%2C%20-1502002290)%3B%0A%20%20%20%20b%20%3D%20ff(b%2C%20c%2C%20d%2C%20a%2C%20x%5Bi%2B15%5D%2C%2022%2C%20%201236535329)%3B%20%20%20%0A%0A%20%20%20%20a%20%3D%20gg(a%2C%20b%2C%20c%2C%20d%2C%20x%5Bi%2B%201%5D%2C%205%20%2C%20-165796510)%3B%0A%20%20%20%20d%20%3D%20gg(d%2C%20a%2C%20b%2C%20c%2C%20x%5Bi%2B%206%5D%2C%209%20%2C%20-1069501632)%3B%0A%20%20%20%20c%20%3D%20gg(c%2C%20d%2C%20a%2C%20b%2C%20x%5Bi%2B11%5D%2C%2014%2C%20%20643717713)%3B%0A%20%20%20%20b%20%3D%20gg(b%2C%20c%2C%20d%2C%20a%2C%20x%5Bi%2B%200%5D%2C%2020%2C%20-373897302)%3B%0A%20%20%20%20a%20%3D%20gg(a%2C%20b%2C%20c%2C%20d%2C%20x%5Bi%2B%205%5D%2C%205%20%2C%20-701558691)%3B%0A%20%20%20%20d%20%3D%20gg(d%2C%20a%2C%20b%2C%20c%2C%20x%5Bi%2B10%5D%2C%209%20%2C%20%2038016083)%3B%0A%20%20%20%20c%20%3D%20gg(c%2C%20d%2C%20a%2C%20b%2C%20x%5Bi%2B15%5D%2C%2014%2C%20-660478335)%3B%0A%20%20%20%20b%20%3D%20gg(b%2C%20c%2C%20d%2C%20a%2C%20x%5Bi%2B%204%5D%2C%2020%2C%20-405537848)%3B%0A%20%20%20%20a%20%3D%20gg(a%2C%20b%2C%20c%2C%20d%2C%20x%5Bi%2B%209%5D%2C%205%20%2C%20%20568446438)%3B%0A%20%20%20%20d%20%3D%20gg(d%2C%20a%2C%20b%2C%20c%2C%20x%5Bi%2B14%5D%2C%209%20%2C%20-1019803690)%3B%0A%20%20%20%20c%20%3D%20gg(c%2C%20d%2C%20a%2C%20b%2C%20x%5Bi%2B%203%5D%2C%2014%2C%20-187363961)%3B%0A%20%20%20%20b%20%3D%20gg(b%2C%20c%2C%20d%2C%20a%2C%20x%5Bi%2B%208%5D%2C%2020%2C%20%201163531501)%3B%0A%20%20%20%20a%20%3D%20gg(a%2C%20b%2C%20c%2C%20d%2C%20x%5Bi%2B13%5D%2C%205%20%2C%20-1444681467)%3B%0A%20%20%20%20d%20%3D%20gg(d%2C%20a%2C%20b%2C%20c%2C%20x%5Bi%2B%202%5D%2C%209%20%2C%20-51403784)%3B%0A%20%20%20%20c%20%3D%20gg(c%2C%20d%2C%20a%2C%20b%2C%20x%5Bi%2B%207%5D%2C%2014%2C%20%201735328473)%3B%0A%20%20%20%20b%20%3D%20gg(b%2C%20c%2C%20d%2C%20a%2C%20x%5Bi%2B12%5D%2C%2020%2C%20-1926607734)%3B%0A%20%20%20%0A%20%20%20%20a%20%3D%20hh(a%2C%20b%2C%20c%2C%20d%2C%20x%5Bi%2B%205%5D%2C%204%20%2C%20-378558)%3B%0A%20%20%20%20d%20%3D%20hh(d%2C%20a%2C%20b%2C%20c%2C%20x%5Bi%2B%208%5D%2C%2011%2C%20-2022574463)%3B%0A%20%20%20%20c%20%3D%20hh(c%2
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表