公钥加密

RSA非对称加密——前台加密后台解密

三世轮回 提交于 2019-11-30 20:56:35
写在前面 项目安全测试需要将登录功能修改, AES加密不符合要求, 现改为RSA非对称加密.(将登录密码加密后传给后台, 后台解密后再进行一系列的校验) 步骤及关键代码 1.rsasecurity.js 1 (function ($w) { 2 3 if (typeof $w.RSAUtils === 'undefined') 4 var RSAUtils = $w.RSAUtils = {}; 5 6 var biRadixBase = 2; 7 var biRadixBits = 16; 8 var bitsPerDigit = biRadixBits; 9 var biRadix = 1 << 16; 10 var biHalfRadix = biRadix >>> 1; 11 var biRadixSquared = biRadix * biRadix; 12 var maxDigitVal = biRadix - 1; 13 var maxInteger = 9999999999999998; 14 15 16 var maxDigits; 17 var ZERO_ARRAY; 18 var bigZero, bigOne; 19 20 var BigInt = $w.BigInt = function (flag) { 21 if (typeof flag ==

https原理 就是两次http

老子叫甜甜 提交于 2019-11-30 18:39:26
客户端在使用HTTPS方式与Web服务器通信时有以下几个步骤: (1)客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。 (2)Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。 (3)客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。 (4)客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。 (5)Web服务器利用自己的私钥解密出会话密钥。 (6)Web服务器利用会话密钥加密与客户端之间的通信。 HTTPS 协议优点,比http强在哪里? 1 内容加密。浏览器到百度服务器的内容都是以加密形式传输,中间者无法直接查看原始内容。 2 身份认证。保证用户访问的是百度服务,即使被 DNS 劫持到了第三方站点,也会提醒用户没有访问百度服务,有可能被劫持 3 数据完整性。防止内容被第三方冒充或者篡改。 HTTPS通信过程 HTTPS协议 = HTTP协议 + SSL/TLS协议 ,在HTTPS数据传输的过程中,需要用SSL/TLS对数据进行加密和解密,需要用HTTP对加密后的数据进行传输,由此可以看出HTTPS是由HTTP和SSL/TLS一起合作完成的。 SSL的全称是Secure Sockets Layer,即安全套接层协议

HTTPS工作原理以及Android中如何防止抓包

我与影子孤独终老i 提交于 2019-11-30 13:15:32
1. HTTPS的定义 说道HTTPS,不得不提HTTP,HTTP最大的缺陷就是明文传输,数据传输过程中很容易被篡改,所以美国网景公司提出来HTTPS协议,相对HTTP,HTTPS多了一个S,这个S,其实就是SSL/TSL,SSL全称安全套接字层,TSL1.0(传输层安全协议)是SSL3.0的升级版,是用于服务器和客户端加密通信的,所以可以认为两者是同一种协议,SSL因为自身的不安全性,在Android8.0已经被弃用了,以上可以看出HTTPS=HTTP+SSL/TLS 2. 工作原理 1.HTTPS发起SSL连接,链接到服务器的443端口 2.服务器向客户端发送公钥和数字证书 3.客户端通过随机算法生成私钥,然后通过服务器公钥对该私钥加密,生成对称密钥 4.客户端向服务器发送对称密钥 5.服务器通过对称密钥对数据进行加密 6.客户端通过对称密钥来对数据解密 那问题来了,在第二步,如果有好事者截获了服务器对客户端发送的公钥,然后伪造成服务器与客户端通信,这可如何是好呢,如何判断该公钥是合法的呢,数字证书就排上用场了 3.数字证书 数字证书是由CA签发,全世界权威的CA一共100多个,数字证书里包含一对非对称密钥,公钥和私钥以及颁发给、颁发者等信息,里面的公钥对服务器端传输的公钥进行加密,生成密文,然后由客户端的数字证书里的私钥进行解密,从而获得服务器的公钥并确认该公钥是合法的

BUUCTF--rsa

自作多情 提交于 2019-11-30 09:38:59
测试文件: https://buuoj.cn/files/ed10ec009d5aab0050022aee131a7293/41c4e672-98c5-43e5-adf4-49d75db307e4.zip?token=eyJ0ZWFtX2lkIjpudWxsLCJ1c2VyX2lkIjoxOTAzLCJmaWxlX2lkIjoyMDV9.XYl7ag.BZcdhjGojXT726Y0wj4m2X_OOyw 1.文件分析 第一次遇到这种题,不过看到题目知道这是一个rsa解密题。 公钥n = p * q,其中p和q是两个大素数 e是随机选择的数,作为公钥 d是跟e有关的一个数,满足条件式:ed=1(mod phi(n)) phi(n)是欧拉函数,phi(n)=(p-1)(q-1) 转自: https://blog.csdn.net/kevin66654/article/details/54087647 pub.key是公钥,flag.enc是rsa加密后的文件,因此我们只要通过公钥文件解析出n,e,p,q,d,再利用脚本解密rsa加密文件。 2.公钥处理 2.1 提取公钥 IDA打开pub.key后,转换里面的十六进制为字符串,提取出公钥。 -----BEGIN PUBLIC KEY-----

iOS,一行代码进行RSA、DES 、AES、MD5加密、解密

不打扰是莪最后的温柔 提交于 2019-11-30 08:41:43
iOS,一行代码进行RSA、DES 、AES、MD5加密、解密 加密的Demo,欢迎下载 java端的加密解密,读者可以看我同事的这篇文章 http://www.jianshu.com/p/98569e81cc0b 最近做了一个移动项目,是有服务器和客户端类型的项目,客户端是要登录才行的,服务器也会返回数据,服务器是用Java开发的,客户端要同时支持多平台(Android、iOS),在处理iOS的数据加密的时候遇到了一些问题。起初采取的方案是DES加密,老大说DES加密是对称的,网络抓包加上反编译可能会被破解,故采取RSA方式加密。RSA加密时需要公钥和私钥,客户端保存公钥加密数据,服务器保存私钥解密数据。(iOS端公钥加密私钥解密、java端公钥加密私钥解密,java端私钥加密公钥解密都容易做到,iOS不能私钥加密公钥解密,只能用于验签)。 问题 问题1:iOS端公钥加密的数据用Java端私钥解密。 iOS无论使用系统自带的sdk函数,用mac产生的或者使用java的jdk产生的公钥和私钥,进行加密解密自己都可以使用。不过ios加密,java解密,或者反过来就不能用了。要么是无法创建报告个-9809或-50的错误,要么解出来是乱码。ios系统函数种只有用公钥加密,私钥解密的方式。而公钥加密每次结果都不同。 MAC上生成公钥、私钥的方法,及使用 1.打开终端

【转】GnuPG使用介绍

自作多情 提交于 2019-11-30 06:20:17
一、什么是 GPG 要了解什么是 GPG,就要先了解 PGP 。 1991 年,程序员 Phil Zimmermann 为了避开政府监视,开发了加密软件 PGP。这个软件非常好用,迅速流传开来,成了许多程序员的必备工具。但是,它是商业软件,不能自由使用。所以,自由软件基金会决定,开发一个 PGP 的替代品,取名为 GnuPG。这就是 GPG 的由来。 GPG 有许多用途,本文主要介绍文件加密。至于邮件的加密,不同的邮件客户端有不同的设置,请参考 Ubuntu 网站的 介绍 。 本文的使用环境为 Linux 命令行。如果掌握了命令行, Windows 或 Mac OS 客户端,就非常容易掌握。GPG 并不难学,学会了它,从此就能轻松传递加密信息。建议读者一步步跟着教程做,对每条命令都自行测试。 二、安装 GPG 有两种安装方式。可以 下载源码 ,自己编译安装。 ./configure make make install 也可以安装编译好的二进制包。 # Debian / Ubuntu 环境 sudo apt-get install gnupg # Fedora 环境 yum install gnupg 安装完成后,键入下面的命令: gpg --help 如果屏幕显示 GPG 的帮助,就表示安装成功。 三、生成密钥 安装成功后,使用 gen-ken 参数生成自己的密钥。 gpg -

最基础的Nginx教学

天涯浪子 提交于 2019-11-30 05:23:10
文章原创于公众号:程序猿周先森。本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号。 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。HTTP协议,即超文本传输协议是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。HTTP协议是用于从万维网服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。众所周知,HTTP是一个无状态的应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。在Internet中所有的传输都是通过TCP/IP进行的。HTTP协议作为TCP/IP模型中应用层的协议也不例外。HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。如下图所示: 而大家都很清楚TCP/IP共分为四层:应用层、传输层、网络层、数据链路层; 为什么TCP/IP要分成四层呢?意思何在呢?其实主要原因是由于分层能够解耦,动态替换层内协议,不同层各司其责: 应用层:向用户提供应用服务时的通讯活动(ftp

数据安全传输中的非对称加密、信息摘要、HMAC

旧巷老猫 提交于 2019-11-29 21:51:30
一 最近对接了很多第三方支付产品,由于涉及到敏感信息及金钱等非常重要的数据,数据传输安全就显得尤为重要。那么实际是怎样处理的呢? 一般的数据传输流程大概如下: 1.调用支付接口时,将数据信息+商户私钥生成签名,将数据和签名一同发给支付机构 2.支付机构方留有商户的公钥,收到数据时,用商户公钥+数据信息+签名来验证数据的身份和一致性 3.异步通知到商户时,支付机构将数据信息和签名信息一同付给商户服务器 4.商户方留有支付机构的公钥,收到数据时,用支付机构公钥+数据信息+签名来验证数据的身份和一致性 二 下面自己写了一个demo,希望能对各位同学有所帮助: 1.工具类 package com.cyq.util; import javax.crypto.Mac; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import java.security.MessageDigest; /** * @author cyq */ public class HmacDigestUtil { static char[] hexDigits ={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; private static

Ubuntu上搭建Hadoop环境(单机模式+伪分布模式)

允我心安 提交于 2019-11-29 21:27:35
Hadoop在处理海量数据分析方面具有独天优势。今天花时间在自己的Linux上搭建了伪分布模式,期间经历很多曲折,现在将经验总结如下。 首先,了解Hadoop的三种安装模式: 1. 单机模式. 单机模式是Hadoop的默认模。当配置文件为空时,Hadoop完全运行在本地。因为不需要与其他节点交互,单机模式就不使用HDFS,也不加载任何Hadoop的守护进程。该模式主要用于开发调试MapReduce程序的应用逻辑。 2. 伪分布模式. Hadoop守护进程运行在本地机器上,模拟一个小规模的的集群。该模式在单机模式之上增加了代码调试功能,允许你检查内存使用情况,HDFS输入输出,以及其他的守护进程交互。 3. 全分布模式. Hadoop守护进程运行在一个集群上。 参考资料: 1. Ubuntu11.10下安装Hadoop1.0.0(单机伪分布式) 2. 在Ubuntu上安装Hadoop 3. Ubuntu 12.04搭建hadoop单机版环境 4. Ubuntu下安装及配置单点hadoop 5. Ubuntu上搭建Hadoop环境(单机模式+伪分布模式) 6. Hadoop的快速入门之 Ubuntu上搭建Hadoop环境(单机模式+伪分布模式) 本人极力推荐 5 和 6 ,这两种教程从简到难,步骤详细,且有运行算例。下面我就将自己的安装过程大致回顾一下,为省时间,很多文字粘贴子参考资料

c#与JavaScript实现对用户名、密码进行RSA非对称加密

ぃ、小莉子 提交于 2019-11-29 18:15:18
博主最近手上这个项目呢(就是有上百个万恶的复杂excel需要解析的那个项目,参见博客:http://www.cnblogs.com/csqb-511612371/p/4885930.html),由于是一个内网项目,安全性要求很低,不需要做什么报文加密。 但是总觉得用户名密码都是明文传输,略微有点坑甲方... 想了想,那就做个RSA加密,把用户名、密码做密文传输吧...至于为什么是RSA,因为也想趁机学习一下,DES、MD5什么的以前都做过了,不想又复制粘贴敷衍了事,怎么说领导还给了3天时间呢... 咱可是有原则的程序员。 首先要感谢博客园一些前辈们相关的一些文章,让博主一个只知道RSA基本概念的人在很短的时间内就成功实现了JS进行加密,C#进行解密的一个过程。 大概看了10来篇文章,感觉差不多了才开始写的自己的代码... 很难再具体回忆到从哪一篇文章获益最大,只能在此统一表示感谢! 写代码之前大概整理出一个整体流程: 0.后台实现两个基础方法: (1)CreateRsaKeyPair()方法,产生一对RSA私钥公钥,并配以唯一的键值key (2)DecryptRSA()方法,对密文进行RSA解密 1.用户访问客户端,客户端向服务器请求获取一个RSA公钥以及键值key,存储在本地 2.用户在本地公钥失效前发起登录请求,则使用已有公钥对用户密码进行加密;若已过期则执行1后再加密 3