A. 前后端交互数据加解密
本文提供了一种前后端交互数据的加解密方法,主要涉及了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
B. Web 前端密码加密是否有意义
揭秘Web前端密码加密:意义何在?
在Web开发的领域,密码加密一直被视为一项重要任务,然而,对于其必要性和复杂性,似乎存在一些误解。作为一个“有从业经验”的观察者,我发现某些备受推崇的回答者似乎并未深入了解密码学的基础原理。
首先,前端确实可以通过哈希函数(如MD5)对密码进行初步处理,但这只是密码学工具箱中的一个环节。前端加密远非简单的哈希操作所能涵盖,它涉及到更深层次的理论和技术挑战。例如,HTTP协议本身确实存在中间人攻击的隐患,但通过引入随机盐值(salt)和会话管理,我们可以增强安全性,防止重放攻击。
理解密码学的多元性
然而,前端加密的真正意义远超于单一的哈希操作。现代密码学已经发展出了诸如零知识证明、百万富翁问题、盲签名等技术,它们能在不泄露敏感信息的前提下,实现身份验证和信息交换。例如,零知识证明允许用户向验证者证明他们知道密码,但无需透露密码本身。
此外,HTTPS虽然确保了通信过程的安全,但并不保证服务器上数据的绝对隐秘。这正是为什么我们需要更深层次的加密和安全策略,如使用PGP来加密邮件内容,以确保数据隐私。
公开透明与安全性
好的加密算法应当是公开的,以便接受广泛审查,而密码系统则不必完全公开,但必须保证除了密码外的所有信息都是安全的。这涉及到设计上的复杂性和安全性之间的平衡,比如使用多重身份验证系统,确保即使在最弱环节被攻破,整体系统仍能保持安全。
总的来说,尽管HTTPS的普及使得讨论前端密码加密的必要性似乎显得过时,但深入理解密码学的原理和实践对于构建安全的Web应用至关重要。记住,密码系统的安全性依赖于所有组成部分,而不仅仅是一次性的登录界面。让我们一起探索这个看似平凡却充满奥秘的领域,以保护用户的隐私和安全。
C. Web前端密码加密是否有意义
密码在前端加密完全没有意义,对密码系统的安全性不会有任何提高,反而会引发不必要的麻烦。
(1)加密了也无法解决重放的问题,你发给服务器端的虽然是加密后的数据,但是黑客拦截之后,把加密之后的数据重发一遍,依然是验证通过的。直接监听到你所谓的密文,然后用脚本发起一个http请求就可以登录上去了。
http在网络上是明文传输的,代理和网关都能够看到所有的数据,在同一局域网内也可以被嗅探到,你可以开个wireshark抓下局域网的包试试看。加密也没有提高什么攻击难度,因为攻击者就没必要去解密原始密码,能登录上去就表示目标已经实现了,所以,难度没有提高。
(2)既然是加密,那么加密用的密钥和算法肯定是保存在前端的,攻击者通过查看源码就能得到算法和密钥。除非你是通过做浏览器插件,将算法和密钥封装在插件中,然后加密的时候明文混淆上时间戳,这样即使黑客拦截到了请求数据,进行重放过程时,也会很快失效。