当前位置:首页 » 网页前端 » 前端如何加密账号密码
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

前端如何加密账号密码

发布时间: 2023-01-26 06:49:22

① 记录一下前端使用CryptoJS的几种加密方式

自己太小白了,之前在PC端项目中使用的MD5加密,现在的小程序项目使用了 CryptoJS 里面的 enc-base64 和 hmac-sha1 ,之前没有用到过这两种,所以比较疑惑,为何在小程序不继续使用 MD5 呢?所以在这里记录一下自己解疑惑的一些知识点。

随着互联网的兴起,我们对信息的安全越来越受重视,这样就导致在web开发中,对用户密码等各种加密变得更加重要了。与服务器的交互中,为了确保数据传输的安全性,避免被黑客抓包篡改。

对于Base64编码的,我觉得看一篇文章能够解决你的疑惑,我在这里就不赘述了
🧐 Base64编码原理

如: 用户密码,请求参数,文件加密

如: 接口参数签名验证服务

支付数据、CA数字证书

前端的朋友可能会关注前端js加密,我们在做 WEB 的登录功能时一般是通过 Form 提交或 Ajax 方式提交到服务器进行验证的。为了防止抓包,登录密码肯定要先进行一次加密(RSA),再提交到服务器进行验证。一些大公司都在使用,比如淘宝、京东、新浪 等。

前端加密也有很多现成的js库,如:

JS-RSA: 用于执行OpenSSL RSA加密、解密和密钥生成的Javascript库, https://github.com/travist/jsencrypt

MD5: 单向散列加密md5 js库, https://github.com/blueimp/JavaScript-MD5

crypto-js: 对称加密AES js库, https://github.com/brix/crypto-js

-CryptoJS (crypto.js) 为 JavaScript 提供了各种各样的加密算法。

HMAC 系列是消息验证,用于验证一个消息是否被篡改——如网站上传递 email 和 hmac(email),则接收时可以通过 hmac(email) 获知 email 是否是用户伪造的

② 前端js几种加密/解密方法

方法汇总:
https://www.cnblogs.com/pinkpolk/articles/13600696.html

项目中用了crypto-js DES加密解密 前端用下面方法加密 后台用java的des解密
https://blog.csdn.net/huaweichenai/article/details/103497194

crypto-js AES需要前端来处理加密解密
https://www.npmjs.com/package/crypto-js

JS 使用 SHA1 加密示例
https://blog.csdn.net/qq_40147863/article/details/88034357

③ web前端用户的密码提交时应当怎样加密

密码在前端加密完全没有意义,对密码系统的安全性不会有任何提高,反而会引发不必要的麻烦。首先,做前端开发的人需要知道,前端系统的控制权是完全在用户手里的,也就是说,前端做什么事情,用户有完全的控制权。假设如同 @陈轩所说,前端做过了md5,后台就不用做了,这个做法会有什么后果?如果某一天,这个系统的数据库泄露了,黑客就直接拿到了每个用户的密码md5值,但此时,由于黑客知道密码是在前端进行哈希的,所以他不需要爆破出该md5对应的原文是什么,而是直接修改客户端向服务器发出的请求,把密码字段换成数据库中MD5就可以了,由于与数据库中记录一致,直接就会登录成功。这跟直接存储明文密码没有任何区别!!!所以不管前端是不是加密了密码,后台使用安全的哈希算法对内容再次转换是非常有必要的。(MD5可不行,要用bcrypt,我之前回答过一个类似的:随着显卡性能的高速发展,目前的快速Hash算法是否已经变得不够安全了?)这个回答还有一个人赞同,希望大家别被错误答案误导了。另外一个答案 @林鸿所说,在非安全HTTP连接上,可以防止原始密码被窃听。但问题在于由于你的登录系统接受的哈希过的密码,而不是原文,窃听者根本不需要原始密码,只要通过哈希结果就可以伪造请求登录系统。这样做只能防止被窃听到原文的密码被攻击者用在社会学攻击上,而不能改善该网站的安全性。所以不管前端是不是加密了密码,使用HTTPS安全连接进行登录都是非常有必要的。以上我说的两点,合起来看就是:不管前端是否加密了密码,都不能以此为假设,让后端设计的安全等级下降,否则就会有严重的安全问题。实际上,前端进行密码加密,可以看做帮助用户多进行了一次原文的转换,不管用了什么加密算法,算出来的结果都是密码原文,你该如何保护用户的原始密码,就该如何保护此处的加密结果,因为对你的登录系统来说,它们都是密码原文。以上这些,说明了密码加密是没有什么意义的,接下来,我要说明前端加密会带来什么问题。有些人会认为前端进行了加密,可以降低后台的安全性需求,这种错误的观念会造成系统的安全漏洞。实际上,你不能对前端做任何的假设,所有跟安全相关的技术,都必须应用在后台上。前端进行加密会造成页面需要js脚本才能运行,那么假设你的系统需要兼容不能运行js的客户端,就必须再设计一个使用原文的登录接口。由于前端是不是加密,所有安全机制都必须照常应用,所以为系统增加这样的复杂性是完全没必要的,即使传输明文密码,只要正确使用了HTTPS连接和服务器端安全的哈希算法,密码系统都可以是很安全的。

④ 前后端交互数据加解密

本文提供了一种前后端交互数据的加解密方法,主要涉及了AES和RSA两种加密方式。

AES加密是一种对称式加密,即加密和解密所需秘钥是相同的。后端生成一组秘钥,并利用该秘钥加密数据,然后发给前端,同时也需要把秘钥发送给前端,这样前端才能解密。这样就会有风险,一旦秘钥被泄露,你的加密将不存在任何意义。同时,相比RSA加密来说,好处是不会限制加密字符串的长度。

RSA加密,是一种非对称式加密,相比AES加密,这个就安全多了。后端生成一对秘钥,自己拿着私钥,公钥可以公开。这样前端拿公钥进行加密,后端拿私钥进行解密,私钥掌握在自己手里,被泄露的风险就小了很多。当然也有不好的地方,就是被加密字符串的长度不能过长,1024的秘钥只能加密117字节以内的明文,这就比较尴尬了,可能稍微长一点的数据就会超出了,当然可以通过2048或者4096的秘钥来延长加密长度,但总会被超出。所以适合需要加密长度不长的数据,最好是已知长度的数据,这样 就不会因长度问题报错。

RSA+AES混合加密,即后端通过RSA算法生成一对公私钥,并把公钥提供给前端。前端通过AES算法生成密钥,利用公钥进行加密并送给后端,后端根据私钥进行解密,得到与前端相同的AES密钥。然后,前后端就可以利用AES密钥对称加密进行数据交互。

详细步骤如图所示。

RSA+AES混合加密,结合了两种加密方式的优点。另外,前端每次启动都会随机生成AES密钥,后端增加token失效机制(前端设置了定时任务请求token),增加了前后端数据交互的安全性。

https://www.cnblogs.com/huanzi-qch/p/10913636.html
https://blog.csdn.net/weixin_38342534/article/details/94582656

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

加密和解密原则上都应该在后台完成才合乎常理,如果在前端加密,就好比在众目睽睽之下化妆易容,然后声称自己是另一个人一样,没意义啊。
如果一定要在前端加密,可以这样:
<input type="submit" name="submit" value="注册" onclick="var pwd=document.getElementsByName('password')[0];pwd.value=md5(pwd.value);"/>

⑥ 【前端】常用加密方法

• JavaScript 加密后传输(具体可以参考后面的常见加密方法)
• 浏览器插件内进行加密传输
• Https 传输

在加密算法中又分为对称加密和非对称加密。

对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥加密.也就是加密和解密都是用同一个密钥,这种方法在密码学中叫做对称加密算法.

对称加密算法使用起来简单快捷,密钥较短,且破译困难,除了数据加密标准(DES),另一个对称密钥加密系统是国际数据加密算法(IDEA),它比DES的加密性好,而且对计算机功能要求也没有那么高.

常见的对称加密算法有DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES

注意: 因为前端的透明性,对于登录密码等敏感信息,就不要使用JavaScript来进行对称加密. 因为别人可以从前端得到密匙后,可以直接对信息进行解密!

非对称加密算法需要两个密钥:公钥(publickey)和私钥(privatekey)。 公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密。 因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公钥向其它方公开;得到该公钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。甲方只能用其专用密钥解密由其公钥加密后的任何信息。

常见的非对称加密算法有:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)