散列算法

Linux下的密码破解

白昼怎懂夜的黑 提交于 2019-11-29 08:18:56
密码散列: 密码散列的$6 表示是:SHA512 这里我们使用hashcat 工具进行破解 ╰─ hashcat -m 1800 hash.txt /usr/share/wordlists/rockyou.txt --force -m 1800 标识使用hash512的算法 我们尝试破解下密码,主要看你的机器性能和密码字典,使用GPU的话,那就更屌了 已经破解出来啦! 来源: https://www.cnblogs.com/hack404/p/11493234.html

Hash算法相关

可紊 提交于 2019-11-29 04:57:05
一、散列 散列方法的主要思想是根据结点的关键码值来确定其存储地址:以关键码值K为自变量,通过一定的函数关系h(K)(称为散列函数),计算出对应的函数值来,把这个值解释为结点的存储地址,将结点存入到此存储单元中。检索时,用同样的方法计算地址,然后到相应的单元里去取要找的结点。通过散列方法可以对结点进行快速检索。 按散列存储方式构造的存储结构称为散列表。散列技术的核心是散列函数。散列的核心就是:由散列函数决定关键码值(X.key)与散列地址h(X.key)之间的对应关系,通过这种关系来实现组织存储并进行检索。 二、散列函数 1、除余法 2、乘余取整法 3、平方取中法 4、数字分析法 5、基数转换法 6、折叠法 三、冲突解决 1、分离链表法 2、开放地址法 线性探测法 二次探查法 随机探查法 双散列探查法 来源: https://www.cnblogs.com/kingshine007/p/11455283.html

ConcurrentHashMap原理浅析

落花浮王杯 提交于 2019-11-29 01:21:39
HashMap在高并发场景下存在的问题 具体信息可以查看下面这个帖子 https://blog.csdn.net/minkeyto/article/details/78667944 如果实在懒得看也没有关系,我们来简单回顾一下HashMap的结构: 简单来说,HashMap是一个Entry对象的数组。数组中的每一个Entry元素,又是一个链表的头节点。 Hashmap不是线程安全的。在高并发环境下做插入操作,有可能出现下面的环形链表: Segment 在高并发的情况下,一般会使用currentHashMap,ConcurrentHashMap对比HashMap主要是增加了Segment的概念。 Segment是什么呢?Segment本身就相当于一个HashMap对象。 同HashMap一样,Segment包含一个HashEntry数组,数组中的每一个HashEntry既是一个键值对,也是一个链表的头节点。 单一的Segment结构如下: 像这样的Segment对象,在ConcurrentHashMap集合中有多少个呢?有2的N次方个,共同保存在一个名为segments的数组当中。 因此整个ConcurrentHashMap的结构如下: 可以说,ConcurrentHashMap是一个二级哈希表。在一个总的哈希表下面,有若干个子哈希表。 这样的二级结构,和数据库的水平拆分有些相似。

oracle表空间表分区详解(转)

老子叫甜甜 提交于 2019-11-28 05:05:05
oracle表空间表分区详解(转) 此文从以下几个方面来整理关于分区表的概念及操作: 1.表空间及分区表的概念 2.表分区的具体作用 3.表分区的优缺点 4.表分区的几种类型及操作方法 5.对表分区的维护性操作. 表空间及分区表的概念 表空间:是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间。 分区表:当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表。 表分区的具体作用 Oracle的表分区功能通过改善可管理性、性能和可用性,从而为各式应用程序带来了极大的好处。通常,分区可以使某些查询以及维护操作的性能大大提高。此外,分区还可以极大简化常见的管理任务,分区是构建千兆字节数据系统或超高可用性系统的关键工具。 分区功能能够将表、索引或索引组织表进一步细分为段,这些数据库对象的段叫做分区。每个分区有自己的名称,还可以选择自己的存储特性。从数据库管理员的角度来看,一个分区后的对象具有多个段,这些段既可进行集体管理,也可单独管理,这就使数据库管理员在管理分区后的对象时有相当大的灵活性。但是,从应用程序的角度来看,分区后的表与非分区表完全相同,使用 SQL

Hash

余生长醉 提交于 2019-11-27 22:19:37
Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。(来源百度百科解释) Hash的特点 算法是公开的 对相同数据运算,得到的结果是一样的 对不用数据运算,如MD5得到的结果都是32个字符长度的字符串 这玩意没法逆运算 来源: https://www.cnblogs.com/deepalley/p/11380274.html

oracle的表分区

℡╲_俬逩灬. 提交于 2019-11-26 21:20:27
(1.) 表空间及分区表的概念 表空间:   是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间。 分区表: 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表。 ( 2).表分区的具体作用 Oracle的表分区功能通过改善可管理性、性能和可用性,从而为各式应用程序带来了极大的好处。通常,分区可以使某些查询以及维护操作的性能大大提高。此外,分区还可以极大简化常见的管理任务,分区是构建千兆字节数据系统或超高可用性系统的关键工具。 分区功能能够将表、索引或索引组织表进一步细分为段,这些数据库对象的段叫做分区。每个分区有自己的名称,还可以选择自己的存储特性。从数据库管理员的角度来看,一个分区后的对象具有多个段,这些段既可进行集体管理,也可单独管理,这就使数据库管理员在管理分区后的对象时有相当大的灵活性。但是,从应用程序的角度来看,分区后的表与非分区表完全相同,使用 SQL DML 命令访问分区后的表时,无需任何修改。 什么时候使用分区表: 1、表的大小超过2GB。 2、表中包含历史数据,新的数据被增加都新的分区中。 (3).表分区的优缺点 表分区有以下优点

互联网公司面试经——你不得不知道的哈希表

孤街浪徒 提交于 2019-11-26 15:51:48
前言 哈希表,又名散列表。是非常常用的一种数据结构,C#的Hashtable、字典,Java的HashMap,Redis的Hash,其底层实现都是散列表。而在一些互联网公司的面试中,更是技术面试官们必问的一道题目。本文将简单了解哈希表(散列表)这种数据结构。 一、散列表 1.1 散列表 散列表(哈希表),其思想主要是基于数组支持按照下标随机访问数据时间复杂度为O(1)的特性。可是说是数组的一种扩展。假设,我们为了方便记录某高校数学专业的所有学生的信息。要求可以按照学号(学号格式为:入学时间+年级+专业+专业内自增序号,如2011 1101 0001)能够快速找到某个学生的信息。这个时候我们可以取学号的自增序号部分,即后四位作为数组的索引下标,把学生相应的信息存储到对应的空间内即可。 如上图所示,我们把学号作为key,通过截取学号后四位的函数后计算后得到索引下标,将数据存储到数组中。当我们按照键值(学号)查找时,只需要再次计算出索引下标,然后取出相应数据即可。以上便是散列思想。 1.2 散列函数 上面的例子中,截取学号后四位的函数即是一个简单的散列函数。 //散列函数 伪代码 int Hash(string key) { // 获取后四位字符 string hashValue =int.parse(key.Substring(key.Length-4, 4)); //

数据结构与算法之美学习笔记:Word文档中的单词拼写检查功能是如何实现的?(第18讲)

我怕爱的太早我们不能终老 提交于 2019-11-26 14:16:21
通过上一节的学习,我们知道,散列表的查询效率并不能笼统地说成是O(1)。它跟散列函数、装载因子、散列冲突等都有关系。如果散列函数设计得不好, 或者装载因子过大,都可能导致散列冲突发生的概率升高,查询效率下降。 在极端情况下,有些恶意的攻击者,还有可能通过精⼼构造的数据,使得所有的数据经过散列函数之后,都散列到同一个槽里。如果我们使用的是基于链表的冲突解决冲法, 那这个时候,散列表就会退化为链表,查询的时间复杂度就从O(1)急剧退化为O(n)。 如果散列表中有10万个数据,退化后的散列表查询的效率就下降了10万倍。更直接点说,如果之前运⾏100次查询只需要0.1秒,那现在就需要1万秒。 这样就有可能因为查询操作消耗耗量CPU或者线程资源,导致系统无法响应其他请求,从而达到拒绝服务攻击(DoS)的⽬的。这也就是散列表碰撞攻击的基本原理 今天,我们就来学习⼀下, 如何设计一个可以应对各种异常情况的⼯业级散列表,来避免在散列冲突的情况下,散列表性能的急剧下降,并且能抵抗散列碰撞攻击? 一、散列思想 散列表用的是数组支持按照下标随机访问数据的特性,所以三列表其实就是数组的一种扩展,由于数组演化而来,可以说、如果没有数组、就没有散列表 按照编号查找选手信息,效率是不是很高 时间复杂度就是 O(1) 参赛编号(6位数) 年级(前2位)+班级(中间2位)+编号(最后2位)

解密比特币的那些核心技术原理

一笑奈何 提交于 2019-11-26 02:04:32
作者:李艳鹏,现任蚂蚁金服高级技术专家,著有《分布式服务架构:原理、设计与实战》和《可伸缩服务架构:框架与中间件》,曾经在易宝支付、花旗银行、甲骨文、新浪微博、路透社等大型IT互联网公司担任技术负责人和首席架构师的工作,现专注于区块链平台的研发与推广,擅长大规模高并发的线上与线下相结合的第三方支付平台的架构规划与实施。 1 背景 对于当下流行的电子货币-比特币系统,朋友圈里有很多介绍性的文章,也有人试图通过漫画来生动的解释比特币的特性,但是始终不得要领,总是有些问题想不清楚,为了弄清楚这些问题,最近深入的研读了几本比特币的书籍以及中本聪本人发表的比特币论文,感觉茅塞顿开,迫不及待的与大家分享我的理解,希望与大家共同探讨、共同进步。 2 比特币 比特币是一种利用点对点技术实现的电子现金系统,它允许一个组织直接与另外一个组织进行在线支付,而不需要中间的权威的清算机构。 在比特币的世界里,如果你想拥有比特币,你需要申请一个比特币地址,就像你到银行存款,需要开立一个账户,然后,你就拥有这个账号,有了自己的账号,你可以向你的账号存款,别人也可以给你的账号转账,当你需要提款的时候或者给别人转账的时候,你需要出示一个能够打开这个地址的钥匙,也就是你的私钥,就像你在ATM上取款的时候需要提供密码一样。 与银行发行的法定货币不同,法定货币的发行是由各国央行来统一管理的,大家都相信央行是靠谱的

HASH哈希

試著忘記壹切 提交于 2019-11-25 18:55:27
hash 译:散列、杂凑,作用:把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值,这种转换是压缩映射。 hash特性 1、不可逆。不能通过结果推算出输入,所以又被称为不可逆的算法,也可以作为加密算法存在 2、计算极快。 hash的用途 1、 来源: https://www.cnblogs.com/nanjo4373977/p/11929366.html