摘要算法

聊聊对称/非对称加密在HTTPS中的使用

懵懂的女人 提交于 2019-12-02 06:05:34
目前常用的加密算法主要分成三类: 对称加密算法 非对称加密算法 消息摘要算法 在互联网中,信息防护主要涉及两个方面:信息窃取和信息篡改。对称/非对称加密算法能够避免信息窃取,而消息摘要算法能够避免信息篡改。 对称加密算法 发送方和接收方需要持有同一把密钥,发送消息和接收消息均使用该密钥。 相对于非对称加密,对称加密具有更高的加解密速度,但双方都需要事先知道密钥,密钥在传输过程中可能会被窃取,因此安全性没有非对称加密高。 非对称加密算法 接收方在发送消息前需要事先生成公钥和私钥,然后将公钥发送给发送方。发送放收到公钥后,将待发送数据用公钥加密,发送给接收方。接收到收到数据后,用私钥解密。 在这个过程中,公钥负责加密,私钥负责解密,数据在传输过程中即使被截获,攻击者由于没有私钥,因此也无法破解。 非对称加密算法的加解密速度低于对称加密算法,但是安全性更高。 消息摘要算法 消息摘要算法可以验证信息是否被篡改。 在数据发送前,首先使用消息摘要算法生成该数据的签名,然后签名和数据一同发送给接收者。接收者收到数据后,对收到的数据采用消息摘要算法获得签名,最后比较签名是否一致,以此来判断数据在传输过程中是否发生修改。 无论输入的消息有多长,计算出来的消息摘要的长度总是固定的。例如应用MD5算法摘要的消息有128个比特位,用SHA-1算法摘要的消息最终有160比特位的输出,SHA

加密、解密、数字签名和数字证书详解

大兔子大兔子 提交于 2019-12-02 03:22:31
1. 概述 随着电子商务的迅速发展,信息安全已成为焦点问题之一,尤其是网上支付和网络银行对信息安全的要求显得更为突出。为了能在因特网上开展安全的电子商务活动,公开密钥基础设施(PKI, Public Key Infrastructure)逐步在国内外得到广泛应用。我们是否真的需要PKI,PKI究竟有什么用?下面通过一个案例一步步地来剖析这个问题。 2. 案例 2.1 案例内容 甲想将一份合同文件通过Internet发给远在国外的乙,此合同文件对双方非常重要,不能有丝毫差错,而且此文件绝对不能被其他人得知其内容。如何才能实现这个合同的安全发送? 2.2 问题1 问题1 :最自然的想法是,甲必须对文件加密才能保证不被其他人查看其内容。那么,到底应该用什么加密技术,才能使合同传送既安全又快速呢?   可以采用一些成熟的 对称加密算法 ,如DES、3DES、RC5等对文件加密。对称加密采用了对称密码编码技术, 对称加密的特点是文件加密和解密使用相同的密钥 ,即加密密钥也可以用做解密密钥,这种方法在密码学中叫做对称加密算法, 2.3 问题2 问题2: 如果黑客截获此文件,是否用同一算法就可以解密此文件呢?   不可以,因为加密和解密均需要两个组件:加密算法和对称密钥,加密算法需要用一个对称密钥来解密,黑客并不知道此密钥。 2.4 问题3 问题3: 既然黑客不知密钥

模块:摘要算法,hashlib

耗尽温柔 提交于 2019-11-29 10:11:22
算法介绍: Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。 什么是摘要算法呢?摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。 摘要算法就是通过摘要函数f()对任意长度的数据data计算出固定长度的摘要digest,目的是为了发现原始数据是否被人篡改过。 摘要算法之所以能指出数据是否被篡改过,就是因为摘要函数是一个单向函数,计算f(data)很容易,但通过digest反推data却非常困难。而且,对原始数据做一个bit的修改,都会导致计算出的摘要完全不同。 hashlib: 摘要算法     一般摘要     加盐摘要     动态加盐摘要 #一般摘要 import hashlib md = hashlib.md5() #获取一个以md摘要的对象 md.update(b'1234') #update方法,传入需要摘要的字符串,必须为bytes类型 #md.update(bytes(password,encoding='utf-8')) #password为动态字符串,同样需要转换为bytes类型,指定字符编码 ret = md.hexdigest #hexdigest是hashlib的一个方法,指向的是存有摘要值的内存地址 ret = md.hexdigest() #加上(

编码、摘要、加密

限于喜欢 提交于 2019-11-29 09:15:29
编码、摘要、加密的区别: 相同点:   三种方式都是通过某种公开的算法将原始信息进行编码 /加密 不同点:   编码:将数据转化成某种固定的格式的编码信息,方便不同系统间的传输,通过解码编码信息可以得到原始信息   摘要(哈希):验证信息的唯一性,不能通过哈希值还原原始信息   加密:加密传输信息,保证信息的安全性,通过密钥和密文可以还原原始信息 编码、散列、哈希、加密的区别:经常看到有人混淆这几个概念,把 md5、sha256 甚至还有 Base64 当作加密算法,弄不清楚摘要、编码、加密的区别,下面就这几个概念结合几个例子来区分以下。 编码: 编码本质上是信息形式的转化。编码的目的不是为了加密信息,是将消息转化成统一的格式,方便在不同系统之中传输。例如最常见的ASCII字符编码。由于网络上只能传输二进制数据,任何数据如果想要经由网络传输,就必须先转化成二进制,ASCII 提供了一个将A、B、C等字母转化为二进制的规则。 信息—>编码—>二进制—>解码—>信息 通过解码可以还原原始信息 例子:ASCII, Unicode, URL Encoding, Base64等 摘要(哈希): 摘要的目的是为了校验信息的完整性,保证信息在传输过程中不被篡改。例如你在网络上需要下载一个非官方论坛软件,但又担心软件被第三方篡改,可以将该软件的md5值和官方下载的md5值进行对比,如果一致

前端进阶 & 面试必备,优质资源、好文整理分享!

微笑、不失礼 提交于 2019-11-29 05:15:37
前言 前端技术日新月异,随着 大前端 的趋势,想要成为一名合格的前端工程师,需要学习掌握的东西更是宽泛。所以我们在寻求进阶的过程中,既要不断夯实前端基础,也要快速响应技术的更新迭代。闲话少说,这次给大家整理分享一些前端进阶的优质学习资源,希望对大家有所帮助! 个人博客地址 ?? fe-code github 优质项目 frontend-tech-list 前端技术清单,不论你是正在自学前端,还是对前端某些技术熟练掌握但某些还未涉足,我都希望这份清单能帮助你 review 一些前端的基础能力。 github 前端技术清单 0. 年度报告 1. 基础拾遗 1.1. JavaScript 1.2. CSS 1.3. 浏览器 2. 工程化与工具 2.1. webpack 2.2. Gulp 2.3. Linter 2.4. 静态类型(Typescript/Flow) 2.5. Babel 2.6. CSS预处理与模块化 3. 性能优化 3.1. 加载性能 3.2. 运行时性能 3.3. 前端缓存 3.4. 性能调试与实践 3.5. 性能指标 4. 安全 4.1. XSS 4.2. CSRF 4.3. CSP 4.4. HTTPS 4.5. 安全实录 5. 自动化测试 5.1. 单元测试 5.2. 端到端测试 (E2E) 5.3. 其他 6. 框架与类库 6.1. React 6.2.

1.文本摘要和信息提取

橙三吉。 提交于 2019-11-27 08:16:55
1.文本摘要和信息提取 文本摘要和信息提取处理试图充巨大的文本语料库中提取关键的重要概念和主题,本质上是在此过程中对它们进行缩减。在深入了解概念和技术之前,应该先了解对文本概要的需求。信息过载(information overload)的概念是文本摘要需求背后的主要原因之一。 由于印刷和口头媒体占据主导,有了大量的书籍、文章、音频和视频。这一切在公元前三或四时机就开始了,当时人们查阅大量的数据,因为书籍的产生似乎没有尽头,而且这种信息的过载常常遭遇到反对。文艺复兴使其,大约在公元 1440 年 Guenberg 发明了印刷术,使书籍、文稿、文章和小册子得以大量生产。这大大增加了信息过载,为此学者控诉;额这样的信息过剩情形,它使信息变得非常难以使用、处理和管理。 在 20 世纪,计算机和技术的进步迎来了数字时代,并最终产生了互联网。互联网为社会媒体、新闻网站、电子邮件、即时通信功能开启了充满生产和消费信息的各种可能性的窗口。反过来这又导致了信息量的爆炸式增长和不需要的垃圾邮件信息、无用的状态和推文——乃至导致在网络上发布更多不重要的内容。 那么,信息裹扎就意味着存在过多的数据或信息,消费者在作出知情决策会觉得难以处理。一旦系统输入的信息量超过系统的处理能力时,便会发生过载。人类具有有限的人之处理能力,并且还以这样一种方式进行连接,因为思维常常会随时徘徊游离

构成信息安全技术体系的三类基本算法

孤人 提交于 2019-11-26 02:10:11
  信息加密技术经过多年的发展,由一些基本算法组合形成了许多成熟的应用,如数字签名,安全证书,HTTPS,以及最近大热的数字加密货币,区块链等。这些看似种类繁多的应用,其实都由三类基本的算法通过不同的组合来实现,这三类算法分别是: 数据摘要(在很多场合也被称作哈希运算),对称加密,非对称加密。本文抛开这三类算法在不同实现方案中的差异,抽象出各类算法的共性,提纲挈领地描绘出三类算法在加密体系中的应用场景,让开发者能在短时间内对信息加密体系有个全局的认识,并能将这三类算法应用在实际的需求场景中,希望本文能成为设计信息加密应用的简要手册。   阅读建议:每类算法都以伪代码给出函数声明,不代表特定算法, 比如函数digest代表了在实际使用中的MD5, SHA1, RIPEMD160等实现了数据摘要功能的算法,读者在阅读过程中不要急于去考虑这些函数的实现,而应该去领会算法的特点和完成的功能。这些算法几乎在所有主流的编程语言库中都有具体实现,实在有很少的场合需要自己再去实现。对于有研究技术细节需求的读者,可以在阅读完本文后,对信息加密体系这棵树有了全局的了解,再按图索骥地去研究树叶.   下面将分别介绍这三类算法各自的特性和应用, 然后再对将这些算法组合起来的应用进行介绍.    1. 数据摘要 1.1. 函数声明: byte[] digest(byte[] data) 1.2. 函数特性: