Categories


Tags


HTTP使用RSA公钥加密算法加密明文

网站想要加密传输数据以防被窃取,最可靠的方式莫过于使用公钥加密算法加密,使用HTTPS协议的网站在整个传输过程中都使用了这个技术,对于未能使用HTTPS的HTTP网站我们也可以自行实现。

功能说明

由于HTTP是直接传输明文数据的,在网络安全越发严峻的今天,未经加密的HTTP方式已经变得岌岌可危,谷歌公司更是直接表明在搜索结果中会优先考虑使用HTTPS加密的网站。

尽管整体趋势是向HTTPS倾斜的,但是由于诸多服务器以及CDN等服务商还没全面兼容HTTPS协议,目前要实现整站切换至HTTPS协议可行性还不高。

同时安全形势又刻不容缓,对此,我们可以自行实现RSA加密私密信息。

算法说明

由于多梦数学不是很好,RSA公钥加密算法的具体实现多梦就不多说了,对算法的实现有兴趣的童鞋可以去看看阮一峰的“RSA算法原理”,下面多梦就说说RSA算法的效果。

RSA算法是非对称加密算法的一种,也叫公钥加密。

和对称加密算法不同的是,对称加密算法是加密和解密都使用同一把钥匙同一种规则,也就是如果你知道怎么加密的,你就知道怎么解密了。所以算法和密钥不能泄露,否则加密就无意义了。

而公钥加密算法则是同时拥有两把钥匙,一个叫公钥,一个叫私钥。这两个钥匙是对应的,使用公钥加密的内容只有使用私钥才能解密,使用私钥加密的内容只有使用公钥才能解密。所以算法和公钥都是可以公开的,只要私钥还是私密的,就是安全的。

实现思路

由于我们是加密HTTP要发送的数据,所以加密过程是要在客户端浏览器完成的,算法和密钥都需要在发送HTTP数据之前就已经存在浏览器中,此时使用对称加密算法已经无意义,因为别人根据你这个加密可以直接解密。

所以我们需要选择非对称性加密,在网页中引入算法和公钥加密,然后发送HTTP数据到服务器,服务器再根据私钥解密。因为私钥是私密的,所以算法和公钥公开也是无法解密,也是安全的。

具体到HTTP请求的加密实现,就是在网页提交表单数据之前使用JavaScript实现公钥加密数据,然后服务器接受到加密数据后,使用PHP或其他服务器语言进行私钥解密。

扩展阅读

使用JavaScript实现OpenSSL RSA加密和解密:https://github.com/travist/jsencrypt

使用PHP实现OpenSSL RSA加密和解密:http://php.net/manual/zh/ref.openssl.php

来源:投稿,原文链接。

来源:月光博客


Public @ 2017-11-18 15:56:00

如何选择合适的虚拟主机

选择合适的虚拟主机需要考虑以下几个因素: 1. 需求量:需要根据自己的网站访问量、数据存储量、带宽等需求估算出所需的硬件资源。如果需要的资源较小,可以选择共享虚拟主机;如果需要的资源较大,可以选择私有虚拟主机或云主机。 2. 稳定性:要选择稳定的虚拟主机,避免经常出现宕机、卡顿或其他故障情况。 3. 安全性:要选择具有安全机制的虚拟主机,能够保障网站的数据安全性。 4. 技术支持:要选择提

Public @ 2023-06-21 07:00:15

Z-BLOG常用技巧汇总

这里发布一些收集来的Z-BLOG的一些常用技巧,供爱好者定制自己的BLOG。高效能的日志搜索用途:搜索是非常消耗系统资源的动作,而且对于多关键字搜索和模糊搜索,处理起来也非常麻烦,这里提供了一个非常高效而实用的搜索方法,就是使用Google的站内搜索技术,当你的日志被Google索引了大部分的时候,这种搜索方法的效果会特别出色。新站或Google网页级别低的不建议使用这种方法。方法:修改searc

Public @ 2018-02-15 15:44:57

如何正确启用HTTPS?为什么要启用HTTPS访问?

HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。如何正确启用HTTPS?HTTPS访问就是使用SSL协议进行访问,需要将网站架设为SSL安全站点。1、需要从可信的证书办法机构CA获取服务器证书。2、必须在WEB服务器上安装服务器证书。3、必须在WEB服务器上启用SSL功能。4、客户端(浏览器端

Public @ 2022-12-07 15:56:10

discuz、ecshop、帝国cms部署https(ssl)后会员无法登录

注意,以下教程只针对我司港台虚拟主机或者亚数的云主机香港IP部署SSL后的301跳转1.discuz部署https后台无法登录:discuz采用: $_SERVER[‘HTTPS’] 方式判断,我司虚拟主机不支持同时也不支持$_SERVER['HTTP_HOST'],需使用$_SERVER['HTTP_FROM_HTTPS']进行判断,其他php程序同样适用。sou

Public @ 2018-11-02 15:55:57

更多您感兴趣的搜索

0.442592s