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

  来源:投稿,原文链接。

时间: 2024-08-03 06:16:44

HTTP使用RSA公钥加密算法加密明文的相关文章

rsa加解密-java产生RSA公钥,C++进行加密问题

问题描述 java产生RSA公钥,C++进行加密问题 如何将java生产的RSA公钥传递给C++,C++采用的加密函数是RSA_public_encrypt.是否需要将java产生的公钥进行什么格式转换?

请问如何使用openssl生成的rsa公钥对字符串加密

问题描述 最近正在研究关于C#的RSA加密解密,发现C#的RSA操作不是一般的复杂,在PHP中对RSA秘钥加密解密太容易了,可是在C#中我一直弄不来,求各位大神赐教.我发现C#的引入秘钥文件基本都是XML格式的,可是我找遍了网上也没有发现PEM格式的公钥如何转成XML文件.头大.我现在有一个公钥文件:比如-----BEGINPUBLICKEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+4wMxpYajfEuizAZxreikjQY0AjrtnKnnV

使用openssl实现rsa非对称加密算法示例

 这篇文章主要介绍了使用openssl实现rsa非对称加密算法的示例,大家参考使用吧  代码如下: <?php /**  * 使用openssl实现非对称加密  * @since 2010-07-08  */ class Rsa {     /**      * private key      */         private $_privKey;           /**          * public key          */         private $_pubKe

安全技术—RSA公钥密码体制安全性分析_漏洞研究

 引言   RSA密码系统是较早提出的一种公开钥密码系统.1978年,美国麻省理工学院(MIT)的Rivest,Shamir和Adleman在题为<获得数字签名和公开钥密码系统的方法>的论文中提出了基于数论的非对称(公开钥)密码体制,称为RSA密码体制.RSA是建立在"大整数的素因子分解是困难问题"基础上的,是一种分组密码体制.   介绍公钥密码体制(背景)   1.对称密码体制   对称密码体制是一种传统密码体制,也称为私钥密码体制.在对称加密系统中,加密和解密采

以前收集的一些资料---使用ASP加密算法加密你的数据(二)

加密|数据|算法          以前收集的一些资料---使用ASP加密算法加密你的数据(二)Julain Sitkewich在第一部分,讨论了如何生成密钥,下面将介绍如何使用这个密钥来加密和解密一个字符串.下面的代码就是能够同时实现这个功能的函数Crypt.asp文件<% Dim g_Key Const g_CryptThis = "Now is the time for all good men to come to the aid of their country."Co

求助:如何用C语言编程获取证书中的RSA公钥?

问题描述 如何用C语言编程获取证书中的RSA公钥,然后用RSA公钥对会话密钥加密后进行传输呢?CertOpenStoreCertFindCertificateInStore这些函数是包含在哪个头文件中呢? 解决方案 解决方案二:Error1errorLNK2019:unresolvedexternalsymbol__imp__CertCloseStore@8referencedinfunction"struct_CERT_CONTEXTconst*__cdeclGetCertificateCon

使用openssl实现rsa非对称加密算法示例_php实例

复制代码 代码如下: <?php/** * 使用openssl实现非对称加密 * @since 2010-07-08 */class Rsa{    /**     * private key     */        private $_privKey;         /**         * public key         */        private $_pubKey;         /**         * the keys saving path        

RSA公钥的问题

问题描述 从后台获取到的经过BASE64加密的RSA公钥,经过BASE64解码后,是一堆乱码,这个RSA公钥要怎么用啊?在网上查资料说RSA公钥一般都是按照(公钥+模值)一对来分发的,但是从解析出来的结果来看,完全分不清哪个是公钥哪个是模值啊?RSA公钥解码前,MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCuOI6oMgOBibOgFWswkKmt5QjORrfQmVZ/eKiOPqqUfa0jRAtKdV1jgLiuMR3wbItFp1zel62TtKCG4GN

使用ASP加密算法加密你的数据

使用ASP加密算法加密你的数据简介首先简单介绍一下有关加密的背景.由于美国禁止几种密码算法的对外出口的加密位数(例如SSL的40位加密限制),本文将介绍一种ASP可以使用的简单字符加密算法,而不是那些受限制的加密算法.其实,这里介绍的加密算法对于一般的运用来说已经足够解密人麻烦一阵子的了.它的加密基础是最简单的Vernum密码方法,我将在下一篇文章中介绍这种密码.它的基本原理是,需要有一个需要加密的明文和一个随机生成的解密钥匙文件.然后使用这两个文件组合起来生成密文.(明文) 组合 (密钥) =