精华内容
下载资源
问答
  • 2018-11-24 18:24:02

    http协议及前端加密方式

    拓展

    超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息

    为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密

    http

    互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少

    https

    HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL,用于安全的HTTP数据传输

    SSl提供了3中服务,保证数据的安全传输

    1. 认证用户和服务器,确保数据发送到正确的客户机和服务器;
    2. 加密数据以防止数据中途被窃取;
    3. 维护数据的完整性,确保数据在传输过程中不被改变。

    工作步骤

    1. 客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。
    2. Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
    3. 客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
    4. 客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
    5. Web服务器利用自己的私钥解密出会话密钥。
    6. Web服务器利用会话密钥加密与客户端之间的通信。

    HTTPS的优点

    尽管HTTPS并非绝对安全,掌握根证书的机构、掌握加密算法的组织同样可以进行中间人形式的攻击,但HTTPS仍是现行架构下最安全的解决方案,主要有以下几个好处

    1. 使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器
    2. HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性
    3. HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本
    4. 谷歌曾在2014年8月份调整搜索引擎算法,并称“比起同等HTTP网站,采用HTTPS加密的网站在搜索结果中的排名将会更高”

    HTTPS的缺点

    1. HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电
    2. HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响
    3. SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用
    4. SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗
    5. HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行

    前端几种加密方式

    七种算法:BASE64、MD5、SHA、HMAC、RSA 、AES、ECC

    MD5、SHA、HMAC、RSA这四种加密算法,可谓是非可逆加密,就是不可解密的加密方法,我们称之为单向加密算法。

    1. BASE64

    按照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable.),常见于邮件、http加密,截取http信息,你就会发现登录操作的用户名、密码字段通过BASE64加密的。

    主要就是BASE64Encoder、BASE64Decoder两个类,我们只需要知道使用对应的方法即可。另,BASE加密后产生的字节位数是8的倍数,如果不够位数以=符号填充。

    1. MD5

    MD5 – message-digest algorithm 5 (信息-摘要算法)缩写,广泛用于加密和解密技术,常用于文件校验。不管文件多大,经过MD5后都能生成唯一的MD5值。好比现在的ISO校验,都是MD5校验。怎么用?当然是把ISO经过MD5后产生MD5的值。一般下载linux-ISO的朋友都见过下载链接旁边放着MD5的串。就是用来验证文件是否一致的。

    通常我们不直接使用上述MD5加密。通常将MD5产生的字节数组交给BASE64再加密一把,得到相应的字符串。

    1. SHA

    SHA(Secure Hash Algorithm,安全散列算法),数字签名等密码学应用中重要的工具,被广泛地应用于电子商务等信息安全领域。虽然,SHA与MD5通过碰撞法都被破解了, 但是SHA仍然是公认的安全加密算法,较之MD5更为安全。

    1. HMAC

    HMAC(Hash Message Authentication Code,散列消息鉴别码,基于密钥的Hash算法的认证协议。消息鉴别码实现鉴别的原理是,用公开函数和密钥产生一个固定长度的值作为认证标识,用这个标识鉴别消息的完整性。使用一个密钥生成一个固定大小的小数据块,即MAC,并将其加入到消息中,然后传输。接收方利用与发送方共享的密钥进行鉴别认证等。

    1. RSA加密
    • RSA非对称加密算法
    • 非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)
    • 公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密

    特点:

    • 非对称密码体制的特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快
    • 对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了

    但是RSA加密算法效率较差,对大型数据加密时间很长,一般用于小数据

    常用场景:

    • 分部要给总部发一段报文,先对报文整个进行MD5得到一个报文摘要,再对这个报文摘要用公钥加密。然后把报文和这个RSA密文一起发过去。
    • 总部接收到报文之后要先确定报文是否在中途被人篡改,就先把这个密文用私钥解密得到报文摘要,再和整个报文MD5一下得到的报文摘要进行对比 如果一样就是没被改过。
    1. AES

    AES是开发中常用的加密算法之一。然而由于前后端开发使用的语言不统一,导致经常出现前端加密而后端不能解密的情况出现。然而无论什么语言系统,AES的算法总是相同的, 因此导致结果不一致的原因在于 加密设置的参数不一致 。

    1. ECC

    ECC是EllipticCurves Cryptography的缩写,意为椭圆曲线密码编码学。和RSA算法一样,ECC算法也属于公开密钥算法。最初由Koblitz和Miller两人于1985年提出,其数学基础是利用椭圆曲线上的有理点构成Abel加法群上椭圆离散对数的计算困难性。ECC算法的数学理论非常深奥和复杂,在工程应用中比较难于实现,但它的单位安全强度相对较高,它的破译或求解难度基本上是指数级的,黑客很难用通常使用的暴力破解的方法来破解。RSA算法的特点之一是数学原理相对简单,在工程应用中比较易于实现,但它的单位安全强度相对较低。因此,ECC算法的可以用较少的计算能力提供比RSA加密算法更高的安全强度,有效地解决了“提高安全强度必须增加密钥长度”的工程实现问题。

    与RSA算法相比,ECC算法拥有突出优势:

    1. 更适合于移动互联网:ECC加密算法的密钥长度很短(256位),意味着占用更少的存储空间,更低的CPU开销和占用更少的带宽。随着越来越多的用户使用移动设备来完成各种网上活动,ECC加密算法为移动互联网安全提供更好的客户体验。
    2. 更好的安全性:ECC加密算法提供更强的保护,比目前的其他加密算法能更好的防止攻击,使你的网站和基础设施比用传统的加密方法更安全,为移动互联网安全提供更好的保障。
    3. 更好的性能: ECC加密算法需要较短的密钥长度来提供更好的安全,例如,256位的ECC密钥加密强度等同于3072位RSA密钥的水平(目前普通使用的RSA密钥长度是2048位)。其结果是你以更低的计算能力代价得到了更高的安全性。经国外有关权威机构测试,在Apache和IIS服务器采用ECC算法,Web服务器响应时间比RSA快十几倍。
    4. 更大的IT投资回报:ECC可帮助保护您的基础设施的投资,提供更高的安全性,并快速处理爆炸增长的移动设备的安全连接。 ECC的密钥长度增加速度比其他的加密方法都慢(一般按128位增长,而 RSA则是倍数增长,如:1024 –2048–4096),将延长您现有硬件的使用寿命,让您的投资带来更大的回报。

    一辈子很短,努力的做好两件事就好;第一件事是热爱生活,好好的去爱身边的人;第二件事是努力学习,在工作中取得不一样的成绩,实现自己的价值。

    更多相关内容
  • 详细讲述了利用HTTPS协议加密web传输的过程
  • 在过去的一年里,我对 Web 3.0 有点着迷。增长速度如此之快,以至于每天都在发生变化。世界各地的人们都在改变职业。最有才华的专业人士加入去中心化网络运动是因为: a) 他们的意识形态 b) 底层技术。 虽然我们...

    在过去的一年里,我对 Web 3.0 有点着迷。增长速度如此之快,以至于每天都在发生变化。世界各地的人们都在改变职业。最有才华的专业人士加入去中心化网络运动是因为:

    a) 他们的意识形态

     b) 底层技术。

    虽然我们所知道的 Web 2.0 和软件仍在吞噬世界并结出硕果,但我们正处于互联网应用程序的下一个重大范式转变的门槛——Web 3.0。

    话虽如此,对于像我这样的非技术人员来说,要理解 Web 3.0 将产生的影响并不容易。我花了很多时间阅读和关注该领域的聪明人,以开始了解基础知识。我将写一系列关于这个主题的文章来加速我的学习。希望也能帮助其他人了解正在发生的事情——从这个开始。我将分解互联网的历史以及 Web 3.0 为何如此令人兴奋。

    Web 1.0

    在 Web 1.0 中,我们通过拨号调制解调器发现了互联网,它帮助我们访问静态网页。按照今天的标准,Web 1.0 是一种可笑的体验。我仍然记得在我的童年时代,一部电影平均需要三天才能下载。互联网速度慢、价格昂贵,而且用户体验很糟糕。

    然而,我们可以如此轻松地与几乎全世界共享信息这一事实对我们的进步产生了难以置信的影响。在互联网出现之前,我们依赖印刷书籍。我们只能以物流的速度传播信息。在世界的某些地方,获取信息的速度很慢、有门禁,甚至是不可能的。例如,在保加利亚首都索非亚郊区长大,我只能访问三个信息来源:a)家里的书,b)当地学校强迫我学习的东西,c)我附近的两个图书馆。随着 Web 1.0 的到来,信息交换变得前所未有的可能。我可以下载来自世界各地的书籍和内容,这对我的生活产生了持久的影响。反过来,获得更多更好的内容让我当时做出了一些逆向选择。当我家人的期望归结为找到一份稳定的工作时,我搬到了国外学习。然后我走遍了半个世界,尽管在我的童年时代,我从来没有遇到过这样的人。后来,我是家里第一个创业的人。如果没有访问其他志同道合的人编写的各种内容,就不可能做出这样的选择并获得随之而来的好处。

     “众所周知的‘万维网’只是一组静态网站,包含大量信息,没有互动内容。连接意味着通过摇摇晃晃的调制解调器拨号并阻止房子里的任何人使用电话。它是 AOL 聊天室和 MSN Messenger、AltaVista 和 Ask Jeeves 的网络。它慢得令人发指。流媒体视频和音乐?忘了它。下载一首歌曲至少需要一天的时间。”

    为什么 Web 3.0 很重要,您应该了解它,作者Essentia 1

    2022年,网速慢、静态网站蹩脚的记忆逐渐淡去。从那以后,我们已经走了很长一段路。今天,我们将互联网称为 Web 2.0。

    Web 2.0

    Web 2.0 是我们认为理所当然的一切。例如,更快的互联网速度、交互式内容、社交、移动、云和用户生成的内容。

    有人争论Web 2.0 的兴起是由三大核心创新推动的:移动、社交和云。

    2007 年的 iPhone 实现了移动互联网接入。我们从每天只使用几个小时的互联网转变为“始终连接”模式。我们的手机让我们可以全天访问网络浏览器和移动应用程序。

    从 2004 年左右开始,Friendster、MySpace、Facebook 和 LinkedIn 等公司转型带来了下一波创新。将互联网从一个黑暗和匿名的地方变成今天的样子。社交网络鼓励良好的用户行为。在此过程中,此类平台支持内容生成、推荐、推荐和连接世界。

    最后但同样重要的是,Web 2.0 带来了云。云计算的兴起大大降低了开办新业务的成本。突然间,企业家不需要在服务器、硬件和维护上投入巨资。相反,像 AWS 这样的公司在全球范围内推出了数据中心。允许企业从购买和维护其基础设施转变为以低成本租用存储、计算能力和其他相关资源。反过来,创业成本的降低激发了前所未有的创新。简而言之,Web 2.0 使创始人能够构建原型并进行实验,同时降低成本。

    1999 年至 2010 年创办初创公司的成本下降,马克·苏斯特

    由于所有这些创新,越来越多的人加入了互联网。联合国估计,2005 年至 2019 年间,互联网用户从 11 亿增加到 40 亿。

    国际电联估计到 2019 年底,超过 51% 的全球人口,即 40 亿人正在使用互联网。

    在此过程中,我们生成了人类历史上前所未有的数据。公司意识到个人信息具有巨大的价值。想想Facebook 支付 $19B回到过去收购 WhatsApp。

    亚马逊、Facebook、Twitter、谷歌等大型科技品牌开始收集所有这些信息。每个人的身份、浏览习惯、搜索和在线购物信息都被卖给了出价最高的人。

    Web 2.0 旨在改善浏览互联网的体验,从而带来数据的集中化、丰富的连接性和新的机遇。虽然这对教育和创造财富很有好处,但一些不利因素是不可避免的。最值得注意的问题是在大型科技公司手中巩固了过多的权力,这导致放弃了隐私。所以这就引出了一个问题,网络将如何适应,下一步是什么?

    a16z 加密学校:Chris Dixon:加密网络及其重要性

    Web 3.0

    互联网的下一波浪潮将是关于权力下放和隐私的。每个人的信息都会被退回。

    Web 2.0 将所有数据集中在少数动机可疑的大型组织手中。Web 3.0 正在努力去中心化信息并恢复隐私。

    Web 3.0 归结为几个核心概念:开放、无需信任和无需许可的网络。

    • 开放的web 3.0 建立在区块链之上,通常来自透明运营的社区的开源软件。
    • Trustless ,因为不需要第三方干预。消除由于第三方削减而导致的缓慢交易和更高的利率。区块链使参与者能够通过智能合约公开或私下进行交互。
    • 未经许可,因为不需要理事机构的授权。

    “虽然 Web 2.0 使许多权力结构民主化并创造了新的机会,经济引擎在很大程度上是私有化和垄断的。Facebook、Uber 和 AirBnB 已经为它们主导的公共基础设施创建了专用网络。Web 3.0 与此相反,它是关于多个利润中心通过开放网络共享价值的。”

    为什么 Web 3.0 很重要,您应该了解它,作者Essentia 1

    资料来源:Fabric Ventures

    让我在这里开一个括号,向房间里的大象讲话。当我谈到区块链时,我不仅仅指比特币。根据我的经验,对于许多不熟悉加密货币的人来说,Web 3.0 主要与比特币有关。比特币是一项令人难以置信的创新。事实上,有些人认为它触发了整个 Web 3.0 的发展。然而,为了这篇文章,我不想专注于比特币。相反,我指的是带有代币的区块链架构,也就是加密网络。它可以推广到许多不同的应用程序,例如Etherium索拉纳. 这就是为什么让我们使用 Chris Dixon 对区块链的以下定义:

    区块链:在物理计算机网络之上运行的虚拟计算机,提供强大、可审计的博弈论保证,它运行的代码将继续按设计运行。

    加密网络及其重要性,Chris Dixon

    在传统应用程序中,运行业务的组织可能会决定改变产品的工作方式。使用区块链,您需要大量独立用户共同改变他们的想法,以实现这一目标。因此,“保证它运行的代码将继续按设计运行。”

    为了说明这一点,让我们深入了解一下 Web 3.0 过去十年的历史。要真正掌握空间的发展,我们需要围绕所有相关活动有背景。我们拥有的背景越多,就越容易理解 Web 3.0 的真正潜力。

    不幸的是,经济机会不可避免地会带来一些坏玩家。反过来,一些社区的情绪是加密货币是一个泡沫。许多人认为这些资产没有真正的价值,泡沫迟早会破灭。

    a16z 加密学校:Chris Dixon:加密网络及其重要性

    a16z 加密学校:Chris Dixon:加密网络及其重要性

    我喜欢下面的图表,因为它跟踪了不同活动的增长。虽然代币价格是必不可少的,但该领域还有很多事情发生。要真正理解 Web 3.0 为何令人兴奋,您需要考虑价格、开发人员、启动和社交媒体活动的增长。

    a16z 加密学校:Chris Dixon:加密网络及其重要性

    事实证明,在所有这些维度上都发生了类似水平的活动,这导致了稳定和渐进的增长,直到我们在 2016 年初达到第三次加密浪潮。大约在那个时候,我们看到提到的所有维度都呈指数增长多于。有很多初始硬币发行(ICO)那个时期的活动。不幸的是,许多 ICO 都是由坏玩家领导的。反过来,在 COVID 发生之前,事情变得有点平静。现在,我们再次看到开发人员、初创公司和社交媒体活动的增长。简而言之,在过去的十年中,我们看到了持续的增长。导致许多令人兴奋的创新。

    a16z 加密学校:Chris Dixon:加密网络及其重要性

    今天我们看到了第一次尝试构建 Web 2.0 流行应用程序的分散版本。这结合了 Spotify 等工具的实用性,同时增加了加密后端功能。

    为什么 Web 3.0 很重要,您应该了解它,作者Essentia 1

    简单来说,Web 3.0 允许您创建通过代币支付人们使用它们的解决方案。想象一下,如果 Airbnb 生态系统中的所有参与者都能获得经济激励。因此,从平台创造的财富中分一杯羹?

    今天,只有创始人、投资者和员工在分享好处。明天,我们也可以奖励主人,客人和各种合作伙伴。Web 3.0 以前所未有的方式调整激励措施,同时恢复隐私。

    正如 Web 2.0 并没有自动消灭 Web 1.0(仍然在 Internet 的某些部分周围积聚灰尘),向 3.0 的迁移需要时间并与现有的在线系统集成。车轮已经启动,火车已经离开车站。Web 3.0 是一场运动革命,我们已经过了不归路。

    为什么 Web 3.0 很重要,您应该了解它,作者Essentia 1

     转载自原作者:Viktor Georgiev Kyosev

    展开全文
  • 为保护用户Web通信安全,针对现有Web加密中的运算负荷问题,提出了可保护用户隐私的轻量级Web通信加密方案。该方案很大程度降低服务器在会话密钥协商时的运算负荷,实现通信业务流加密、抵抗第三方监控,进而有效...
  • RSA加密Web前端登录账户密码加密传输

    万次阅读 多人点赞 2022-02-09 14:20:59
    很多情况下一般的javaweb网站,如果安全要求不是很高的话,https协议就可以了。在这种情况下,密码的明文传输显然是不合适的,因为请求如果在传输过程中被截了,就可以直接拿明文密码登录网站了。 为了传输数据的...

        一般在做系统时候对安全性要求比较高,现在通常选择https协议来进行数据传输。很多情况下一般的javaweb网站,如果安全要求不是很高的话,用https协议就可以了。在这种情况下,密码的明文传输显然是不合适的,因为请求如果在传输过程中被截了,就可以直接拿明文密码登录网站了。 为了传输数据的安全、今天就采用RSA加密方式来进行加密。

    实现方式思路:

    编写加解密公共方法类--公钥方法--前端在向后台发起登录请求之前,先请求后台获取公钥的方法,然后经过加密之后再发起登录请求--前端代码需引入jsencrypt.min.js文件--后端接收前端传输过来的密文进行解密--完成登录

    完整代码实现:

    后端首先引入加密jar包

    <!--需要导入的依赖jar-->
    		<!-- https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk16 -->
    		<dependency>
    			<groupId>org.bouncycastle</groupId>
    			<artifactId>bcprov-jdk16</artifactId>
    			<version>1.46</version>
    		</dependency>
    

    编写RSA加密工具类:

    package com.railway.common.utils;
    /**
     * Created by Administrator on 2022/2/8 0008.
     */
    
    import org.apache.commons.codec.binary.Base64;
    import org.bouncycastle.jce.provider.BouncyCastleProvider;
    
    import javax.crypto.Cipher;
    import java.security.*;
    import java.security.interfaces.RSAPublicKey;
    
    public class RSAUtil{
        private static final KeyPair keyPair = initKey();
        private static KeyPair initKey() {
            try {
                Provider provider =new BouncyCastleProvider();
                Security.addProvider(provider);
                SecureRandom random = new SecureRandom();
                KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA", provider);
                generator.initialize(1024,random);
                return generator.generateKeyPair();
            } catch(Exception e) {
                throw new RuntimeException(e);
            }
        }
        private static byte[] decrypt(byte[] byteArray) {
            try {
                Provider provider = new org.bouncycastle.jce.provider.BouncyCastleProvider();
                Security.addProvider(provider);
                Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding", provider);
                PrivateKey privateKey = keyPair.getPrivate();
                cipher.init(Cipher.DECRYPT_MODE, privateKey);
                byte[] plainText = cipher.doFinal(byteArray);
                return plainText;
            } catch(Exception e) {
                throw new RuntimeException(e);
            }
        }
        public static String decryptBase64(String string) {
            return new String(decrypt(Base64.decodeBase64(string.getBytes())));
        }
        public static String generateBase64PublicKey() {
            PublicKey publicKey = (RSAPublicKey)keyPair.getPublic();
            return new String(Base64.encodeBase64(publicKey.getEncoded()));
        }
    
    }
    
    
    

    编写前端需要调用后端生成公钥方法接口:

    //	后端登录生成公钥方法
    	@RequestMapping(value = "/getPublicKey", method = RequestMethod.GET)
    	public R RSAKey(){
    		String publicKey = RSAUtil.generateBase64PublicKey();
    		return R.ok().put("publicKey",publicKey);
    	}

    前端向后台发送登录请求前,先向后台请求获取公钥,加密后再发起登录请求。

    需要提前引入 jsencrypt.min.js文件或npm安装就行

    // 获取公钥
    export function encryption(username, password) {
      return new Promise((resolve, reject) => {
        PublicKey().then((res) => {
          console.log(res);
          let encrypt = new JSEncrypt(); //创建加密实例
          let PublicKey = res.publicKey;
          encrypt.setPublicKey(PublicKey);
          username = encrypt.encrypt(username);
          password = encrypt.encrypt(password);
          resolve({
            username: username,
            password: password
          })
        })
      })
    }

    后端登录接收并解密:

     后端登录接口实现:

    /**
    	 * 登录
    	 */
    	@RequestMapping(value = "/sys/login",method = {RequestMethod.GET,RequestMethod.POST})
    	public Map<String, Object> login(@RequestParam String username, @RequestParam String password)throws IOException {username=username.replaceAll(" ", "+");
    		password=password.replaceAll(" ", "+");
    		username = RSAUtil.decryptBase64(username.trim());
    		password = RSAUtil.decryptBase64(password.trim());
    		System.out.println(username+password);
    		SysUserEntity user = sysUserService.queryByUserName(username);
    		//账号不存在、密码错误
    		if(user == null || !user.getPassword().equals(new Sha256Hash(password, user.getSalt()).toHex())) {
    			return R.error("账号或密码不正确");
    		}
    		//账号锁定
    		if(user.getStatus() == 0){
    			return R.error("账号已被锁定,请联系管理员");
    		}
    		//生成token,并保存到数据库
    		R r = sysUserTokenService.createToken(user.getUserId());
    		r.put("user",user);
    		return r;
    	}

     源码获取: 

    大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻微信公众号获取联系方式👇🏻👇🏻👇🏻

    打卡 文章 更新 192/  365天

     精彩专栏推荐订阅:在下方专栏👇🏻👇🏻👇🏻👇🏻

    Java项目精品实战案例《100套》

    web前端期末大作业网页实战《100套》

    展开全文
  • 网络- HTTPS加密协议

    2021-05-08 08:28:35
    WEB服务存在http和https两种通信方式,http默认采用80作为通讯端口,对于传输采用不加密的方式;https默认采用443,对于传输的数据进行加密传输。 HTTPS 其实是有两部分组成:HTTP + SSL / TLS,也就是在 HTTP 上又...

    一、HTTPS 概述

    HTTPS(超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。

    WEB服务存在http和https两种通信方式,http默认采用80作为通讯端口,对于传输采用不加密的方式;https默认采用443,对于传输的数据进行加密传输。

    HTTPS 其实是有两部分组成:HTTP + SSL / TLS,也就是在 HTTP 上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过 TLS 进行加密,所以传输的数据都是加密后的数据。
    SSL中文叫“安全套接层”,后来由于广泛应用,SSL标准化之后就改名为TLS了

    在这里插入图片描述

    二、对称加密

    对称加密算法的加密和解密都是用同一个密钥。
    目前常见的加密算法有:DES、AES、IDEA 等

    三、非对称加密

    非对称加密使用的是两个密钥,公钥与私钥,公钥加密的内容需要对应的私钥解密,私钥加密的内容需要对应的公钥解密。公钥是公开的,私钥是保密的。

    非对称加密也有很明显的缺点:

    1. 非对称加密比较慢
    2. 非对称加密对文本长度有限制

    非对称加密算法性能较低,但是安全性强,由于其加密特性,更多的是把它用来加密传输对称加密使用的密钥。

    目前常见非对称加密算法:RSA,DSA,DH等。

    四、数字证书+数字签名

    1. 数字证书

    互联网中有公信机构,负责颁发证书以及验证证书的合法性,由它来向服务器颁布可信的证书。常见的公信机构是CA 机构。

    首先,服务器需要向发证机构提供自己的信息,包括:版本、证书编号、发证机构、域名、公钥等,这些信息发证机构验证通过之后就会生成一份数字证书传给服务器。

    2. 数字签名

    为了确保数字证书在传输过程中没有被篡改,需要生成数字签名给客户端验证。

    数字签名的制作过程

    1. CA拥有非对称加密的私钥和公钥。
    2. CA对证书明文信息进行hash。
    3. 对hash后的值用私钥加密,得到数字签名。

    服务器向发证机构提交的信息如域名、公司名称、公钥等等,这些信息就是证书上的明文。
    hash算法有很多种,所以发证机构会把使用的hash算法也在数字证书上标明。
    数字证书 = 明文 + hash算法 + 数字签名,服务器拿到数字证书之后就可以发给请求的客户端了。

    客户端验证过程:

    1. 拿到证书,得到明文T1,数字签名S1。
    2. 用CA机构的公钥对S1解密,得到S2。
    3. 用证书里说明的hash算法对明文T1进行hash得到T2。
      比较S2是否等于T2,等于则表明证书可信。

    各个客户端上都会存储各大发证机构的公钥,会在SSL层验证数字证书的是否可靠。

    五、HTTPS的作用

    1. HTTP的风险

    http协议属于明文传输协议,通信双方没有进行认证,存在一定的问题:

    • 窃听风险:第三方可以获知通信内容
    • 篡改风险:第三方可以修改通信内容
    • 冒充风险:第三方可以冒充他人身份参与通信

    希望协议可以达到:

    • 内容加密:建立一个信息安全通道,信息都是加密传播,第三方无法窃听
    • 数据完整性:具有校验机制,一旦被篡改,通信双方会立刻发现
    • 身份验证:配备身份证书,防止身份被冒充
    2. HTTPS怎么保证安全
    1. 通过数字证书验证身份
    2. 通过非对称加密传输密钥
    3. 数据传输用密钥对称加密,该密钥只有客户端和服务端知道

    五、HTTPS 工作原理

    1. 客户端发起一个 https 网址,然后连接到server的443端口。

    2. 服务端必须要有一套数字证书,可以自己制作,也可以向组织申请。区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面,这套证书其实就是一对公钥和私钥。

    3. 传送证书
      这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间、服务端的公钥,第三方证书认证机构(CA)的签名,服务端的域名信息等内容。

    4. 客户端解析证书
      这部分工作是由客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随机值(密钥)。然后用证书对该随机值进行加密。

    5. 传送加密信息
      这部分传送的是用证书加密后的随机值(私钥),目的就是让服务端得到这个随机值(私钥),以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

    6. 服务端加密信息
      服务端用私钥解密,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,

    7. 传输加密后的信息
      这部分信息是服务端用随机值(私钥)对称加密后的信息,可以在客户端被还原。

    8. 客户端解密信息
      客户端用之前生成的随机值(私钥)解密服务端传过来的信息,于是获取了解密后的内容。

    六、为什么用https加密后还能查看明文数据

    使用https加密之后,正常来说,数据在进行传输的时候,应该是加密过的了。但为什么有时候我们使用firebug查看时,数据传输还是明文的呢?

    其实是因为https加密发生在应用层与传输层之间,所以在传输层看到的数据才是经过加密的,而我们捕捉到的http post,是应用层的数据,此时还没有经过加密。这些明文信息,其实是你的本地数据。

    加密数据只有客户端和服务器端才能得到明文,客户端到服务端的通信过程是安全的。

    其实这样是有可能在本地恶意拦截的,不过在银行电商等安全防护程度较高的网站,除了https加密外,还有安全控件加密,用户必须下载安全控件后才能输入密码。使用安全控件后输入的密码,即使在本地也无法查看信息。

    七、从 HTTPS 到 HSTS

    HTTPS网站通常的做法是对HTTP的访问在服务器端做302跳转,跳转到HTTPS。但是当网站传输协议从 HTTP 到 HTTPS 之后,数据传输真的安全了吗?

    由于用户习惯,通常准备访问某个网站时,在浏览器中只会输入一个域名,而不会在域名前面加上 http:// 或者 https://,而是由浏览器自动填充,当前所有浏览器默认填充的都是http://。一般情况网站管理员会采用了 301/302 跳转的方式由 HTTP 跳转到 HTTPS,但是这个过程总使用到 HTTP 因此容易发生劫持,受到第三方的攻击。

    这个时候就需要用到 HSTS(HTTP 严格安全传输)。

    HSTS

    HSTS是国际互联网工程组织 IETF 正在推行一种新的 Web 安全协议,网站采用 HSTS 后,用户访问时无需手动在地址栏中输入 HTTPS,浏览器会自动采用 HTTPS 访问网站地址,从而保证用户始终访问到网站的加密链接,保护数据传输安全。

    HSTS原理

    HSTS 主要是通过服务器发送响应头的方式来控制浏览器操作:

    1. 首先在服务器响应头中添加 HSTS 响应头:

      Strict-Transport-Security: max-age=expireTime [; includeSubDomains] [; preload]
      

      此响应头只有在 https 访问返回时才生效,其中[ ]中的参数表示可选;

    2. 设置 max-age 参数,时间设置不宜过长,建议设置时间为 6 个月;

    3. 当用户下次使用 HTTP 访问,客户端就会进行内部跳转,并且能够看到 307 Redirect Internel 的响应码;

    4. 网站服务器变成了 HTTPS 访问源服务器。

    开启 HSTS 后网站可以有效防范中间人的攻击,同时也会省去网站 301/302 跳转花费的时间,大大提升安全系数和用户体验。

    用 http 访问
    在这里插入图片描述
    307重定向
    在这里插入图片描述

    用 https 访问,无需重定向
    在这里插入图片描述

    参考链接
    HTTPS 加密了什么内容?
    https://www.zhihu.com/question/52790301
    HTTPS 加密机制
    Https如何保证了数据的安全?

    展开全文
  • 我们在Web应用中往往涉及到敏感的数据,由于HTTP协议以明文的形式与服务器进行交互,因此可以通过截获请求的数据包进行分析来盗取有用的信息。虽然https可以对传输的数据进行加密,但是必须要申请证书(一般都是收费...
  • SSL协议WEB安全实现

    2020-07-04 18:24:22
    SSL是一种安全传输协议...该协议最初由Netscape企业发展而来,现已成为网络上用来鉴别网站和网页浏览者身份,以及在浏览器使用者及网页服务器之间进行加密通讯的全球化标准。本文主要从SSL协议的原理和主要应用进行介绍。
  • web系统中常见的密码加密方式

    千次阅读 2020-02-04 16:32:37
    1 用户密码加密的必要性 web系统中通常都会有登录的功能,登录功能的逻辑是这样的:一个用户拥有一个用户名为zhangsan,密码为123456的账号,在登录时,前端去调用后端的登录接口,并传入zhangsan与123456作为参数...
  • 通过对Web Services安全性分析和SOAP消息传输过程的研究,从SOAP消息的安全...该方案有效弥补了SOAP协议本身安全性差的缺点,也提高了以SOAP协议为基础的Web services技术的安全性,对基于Web服务的应用开发具有重要意义。
  • 首先加密通信是一个什么样的机制?加密通信会根据某些规则对数据进行加密和解密,以便在互联网上进行数据交换而不会被第三方所窃取。从原文转变称密文称为加密,而从密文转换称原文被称为解密。目前有两种加密方式...
  • 加密嵌入 Web 工具包在由 Rabbit3000 微处理器驱动的 RCM3700 RabbitCore 模块的上构建 , 提供了是实现 128-bit 加解密数据传输的加密套接字协议层 (SSL) 。包括加密嵌入 Web 应用开发包中软件包能够对用于嵌入系统...
  • HTTP 协议是以明文方式发送信息的,如果黑客截取了 Web 浏览器和服务器之间的传输报文,就可以直接获得其中的信息。 HTTP 原理: ① 客户端的浏览器首先要通过网络与服务器建立连接,该连接是通过 TCP 来完成的,...
  • HTTPS加密什么?HTTPS加密的作用

    千次阅读 2021-11-22 10:53:17
    它是通过使用公钥对用户数据进行加密,保证客户端和服务器之间信息安全的一种通信方式。 HTTP(超文本传输协议)通常以明文形式传输所有数据。这意味着任何可以拦截消息的人(例如在同一个WiFi网络上)都可以清楚...
  • 使用Web Crypto API的端到端加密聊天

    千次阅读 2021-02-05 15:25:56
    请注意,本教程非常基础,并且具有严格的教育意义,可能包含一些简化,不建议使用您自己的加密协议,如果没有在安全专家的帮助下正确使用,所使用的算法可能包含某些“陷阱” 如果您碰巧迷路了,也可以在此GitHub...
  • 针对TLS 协议恶意加密流量识别研究综述的笔记 ...大部分web流量都是加密的,超过70%的恶意活动是通过加密的方式来传输恶意软件的。 目前大多数网络应用程序和服务都只支持传输层安全(TSL)封装的通信协议 2.TL
  • https包括对称加密和非对称加密两个阶段,在客户端和服务端建立连接的时候使用非对称加密,连接建立以后使用的是对称加密。 注:SSL是传输层协议 加密过程: 1,客户端使用https的URL访问Web服务器,要求与 Web...
  • 进行下载和抓包即可)实验七其他学校传送门实验8不是一两句话可以完成的,而且实验八对于会的人说起来特别简单,对于不会的人也说不清楚具体百度或者B站 :关键词 : Nginx,Apache 静态部署总之操作步骤个人总结 : 安装...
  • 本文介绍了对密码哈希加密的基础知识,以及什么是正确的加密方式。还介绍了常见的密码破解方法,给出了如何避免密码被破解的思路。相信读者阅读本文后,就会对密码的加密有一个正确的认识,并对密码正确进行加密措施...
  • 智能合约扩展了可编程协议的概念,实现了保险、游戏、身份管理和供应链等更高级的用例,智能合约用户可以直接、安全地交互,因此打造了一个更加公平、透明且基于加密事实的新型互联网Web3,一个安全的、由社会运行的...
  • 简单介绍了HTTPS协议的概念,以及HTTPS如何保证安全,以及它和HTTP协议的区别!
  • 文章目录HTTPS VS HTTPHTTPS=HTTP+加密+证书+...由于其本身通信使用明文,没有进行加密,也没有确认通信方的一种机制,所以在互联网上近似于裸奔,很容易就会受到中间人攻击,导致安全存在问题。 通信时数据并没有进
  • Web前端密码加密是否有意义?

    万次阅读 2018-01-16 15:26:22
    Web前端密码加密是否有意义? 既然前端代码都是直接可以看到的,那加密是否还有意义? 我总结一下,首先大家都知道走 HTTPS 才是目前唯一负责的方式。 但在 HTTP 环境下,无论如何都可能会被劫持流量,不管前端做...
  • 加密算法 SSL协议详解

    千次阅读 2016-02-04 22:26:30
     最近在看《密码学与网络安全》相关的书籍,这篇文章主要详细介绍一下著名的网络安全协议SSL。  在开始SSl介绍之前,先给大家介绍几个密码学的概念和相关的知识。  1、密码学的相关概念 密码学...
  • SSL&TLS传输层加密协议实现图解

    千次阅读 2017-09-27 23:03:11
    http://xuding.blog.51cto.com/4890434/1732275 ... Sockets Layer ,加密套接字协议层  1)SSL是为网络通信提供安全及数据完整性的一种安全协议,在传输层对网络连接进行加密  Secure Socket Lay
  • 使用PKI架构保护Web访问的安全SSL如下图3.57所...在完成上述配置后,在web客户端上可以看到访问web服务器的效果如下图3.58所示,由于Web页面没有被加密,所以在传输的过程中,可以使用协议分析器捕获如下图3.59所示的we
  • ctfshow-WEB-web9( MD5加密漏洞绕过)

    万次阅读 2021-09-05 16:54:47
    ctf.show WEB模块第9关是一个SQL注入漏洞, SQL中使用MD5进行加密, 推荐使用MD5加密漏洞绕过 进去以后就是一个登录界面, 盲猜是个SQL注入漏洞 首先, 我们访问根目录下的 robots.txt 文件 robots.txt是一...
  • ESNICheck是一个Python模块(与web应用前端 ),其检查是否有主机名支持加密服务器名称指示( ESNI ),扩展到TLSv1.3用于加密SNI字段。 该模块通过检查TLSv1.3支持并验证发布在其_esni TXT记录上的ESNI密钥来检查...
  • 一般情况下,由于HTTP协议的安全性,传递的参数容易被拦截,从而可能导致潜在的危险,所以一般WebAPI接口层都采用了HTTPS协议的,也就是采用SSL层来对数据进行安全性的加密的。HTTPS(全称:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 149,244
精华内容 59,697
热门标签
关键字:

web加密用什么协议