如何在前端调用js对密码进行加密

如何在前端调用js对密码进行加密,第1张

加密和解密原则上都应该在后台完成才合乎常理,如果在前端加密,就好比在众目睽睽之下化妆易容,然后声称自己是另一个人一样,没意义啊。

如果一定要在前端加密,可以这样:

<input type="submit" name="submit" value="注册" onclick="var pwd=documentgetElementsByName('password')[0];pwdvalue=md5(pwdvalue);"/>

使用内置的三个函数就行,分别是escape(),encodeURI(),以及encodeURIComponent()。

escape() 方法

采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。

不会被此方法编码的字符: @ / +

encodeURI() 方法:

把URI字符串采用UTF-8编码格式转化成escape格式的字符串。

不会被此方法编码的字符:! @ # $& ( ) = : / ; + '

encodeURIComponent() 方法:

把URI字符串采用UTF-8编码格式转化成escape格式的字符串。与encodeURI()相比,这个方法将对更多的字符进行编码,比如 / 等字符。所以如果字符串里面包含了URI的几个部分的话,不能用这个方法来进行编码,否则 / 字符被编码之后URL将显示错误。

不会被此方法编码的字符:! ( ) '

因此,对于中文字符串来说,如果不希望把字符串编码格式转化成UTF-8格式的(比如原页面和目标页面的charset是一致的时候),只需要使用

escape。如果你的页面是GB2312或者其他的编码,而接受参数的页面是UTF-8编码的,就要采用encodeURI或者

encodeURIComponent。

另外,encodeURI/encodeURIComponent是在javascript15之后引进的,escape则在javascript10版本就有。

首先,MD5不是加密算法,是签名算法,哎,到底是有多少国人被毒害了呀。

另外,只要是可以由软件实现的加密算法,js都能使用,只是有效率问题,

一般的

非对称算法,使用的资源都很庞大,所以js很少有。

而对称的加密算法……,由于js是对用户可见的,所以……就和没加密一样。

这也就是为什么真正的高安全网站都不会选择用js做加密,而是选择用>

zzzevazzz 写的破大部分加密,显源码的东东,在地址栏输入: javascript:s=documentdocumentElementouterHTML;documentwrite('');documentbodyinnerText=s;对于JS加密来说参考下面的方法最近很多人在问加密代码的问题。其实这些加密都大同小异,就是对字符串和 Unicode 编码进行转换处理。

这不算加密,只不过一眼看不出来罢了。其实就是JavaScript字符串转义。

原理很简单,比如字符 ’w‘

它的 charCode 是 119 十六进制表示为 0x77

然后利用 JavaScript 字符串转义前缀 \x,表达出编码过的 ASCII 字符来:

\x + charCode的十六进制表示(两位)

所以字符串 '\x77' 就是字符串 'w'

也就是说

'\x77' === 'w'

这个的返回值是 true,二者完全等效!

这是对于 ascii 代码表示形式,charCode 大于 255 的怎么处理?就要用到 \u 前缀了

\u + charCode的十六进制表示(

比如汉字 '学' 的 charCode 是 23398 (0x5b66)

书写时只要把 0x 替换为 \u:

\u5b66

这样就可以了。

'\u5b66' === '学'

那么为什么要这么麻烦呢?直接输入字符不就好了吗?要知道,有些字符是不能打印或不能被输入的(比如功能/控制字符“退格”等),如果要在字符串中包含这些字符,只能依靠字符串转义了!

回头看楼主给的代码:

"\x64\x6f\x63\x75\x6d\x65\x6e\x74"

这个是什么?

F12开浏览器开发者工具,切到控制台(或者你有 nodejs),在控制台输入这一串。

你看到输出什么了吗?

"document"

继续

"\x77\x72\x69\x74\x65\x6c\x6e"

这个输入后,控制台返回

"writeln"

剩下括号内的也是一样的啦。结果是一个指向特定地址的 <a> 标签。

所以翻译过来就是

window['document']['writeln']('<a href="">标签</a>')

看懂了?

好,既然楼主说要怎么加密的。我就写了个 JS 脚本,只要调用这个方法,你就得到“加密”后的字符串信息了:

function encrypt(str) {

  var result = '', charCode

  for(var i = 0, length = strlength; i < length; i++) {

    charCode = strcharCodeAt(i)

    if(charCode < 0x10) {

      result += '\\x0' + charCodetoString(16)

    } else if(charCode < 0x100) {

      result += '\\x' + charCodetoString(16)

    } else if(charCode < 0x1000) {

      result += '\\u0' + charCodetoString(16)

    }else {

      result += '\\u' + charCodetoString(16)

    }

  }

  return result

}

在控制台执行

encrpty('楼主给的那一串')

返回

"\x3c\x61\x20\x68\x72\x65\x66\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x63\x63\x79\x6d\x6b\x2e\x63\x6f\x6d\x2f\x22\x20\x74\x61\x72\x67\x65\x74\x3d\x22\x5f\x62\x6c\x61\x6e\x6b\x22\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x23\x46\x46\x30\x30\x30\x30\x3b\x22\x3e\x3c\x62\x3e\x43\x43\u6e90\u7801\u8bba\u575b\x3c\x2f\x62\x3e\x3c\x2f\x61\x3e"

楼主只要把括号中的那一串替换为上面输入的内容就好了。

以上就是关于如何在前端调用js对密码进行加密全部的内容,包括:如何在前端调用js对密码进行加密、js如何加密加密完之后如何使用、js有几种加密方式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9429492.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存