算法
文章平均质量分 74
tomorrow00hello
这个作者很懒,什么都没留下…
展开
-
哈希函数-SHA1和SHA256算法
SHA2算法是对SHA1算法的继承。区别在于两者的构造和签名长度不同。SHA1SHA-1通过4轮运算(每轮20步,共80步)将长度不超过264的输入压缩成为160bit的消息摘要。初始化MD缓冲区,需要160位来存放哈希函数的初始变量、中间摘要和最终摘要。需要5个32位的寄存器。SHA-1的框图SHA256SHA256最大输入长度为2^64比特,输入按照512比特分组,最终输出256比特长度的消息摘要。消息填充初始化需要8个32位...原创 2020-09-25 14:23:13 · 4168 阅读 · 0 评论 -
什么是哈希函数
Hash函数译为哈希函数,又称散列函数。是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出的值称为散列值或消息摘要。简单来说就是一种将任意长度的输入消息压缩成某一固定长度的消息摘要的函数。它具备以下的性质(哈希函数所必须的性质):H可应用于任意大小的数据块。 H产生定长的输出。 对任意给定的x,计算H(x)比较容易,用硬件和软件均可以实现。出于安全性考虑,对哈希函数的三个安全性假设:对任意给定的散列值h,找到满足H(x)=h的x在计算上是不可行的,称之为单向性...原创 2020-09-25 11:45:24 · 10564 阅读 · 1 评论 -
哈希函数-MD5算法
MD5 通过4轮运算(每轮16步,共64步),将任意长的消息压缩成为一个128bit的消息摘要,使用了4个32bit的寄存器。MD结构MD结构是基于迭代式结构来构造碰撞稳固的Hash函数的方法,即通过某一碰撞稳固的压缩函数(从较大的固定长度的输入集合映射到相对小的有固定长度的输出集合的函数)????:0,1????????0,1????0,1????来构造出碰撞稳固的Hash函数????:0,1∗0,1????。基于MD结构的有固定初始值的Hash函数一般形式????????∈0,1原创 2020-09-25 11:38:40 · 5413 阅读 · 0 评论 -
哈希算法——哈希函数构造
构造哈希函数的目标是使得到的关键字的哈希地址尽可能均匀地分布在n个连续内存单元地址上,从而减少地址冲突。根据关键字的结构和分布的不同,可构造出许多不同的哈希函数。常用的构造哈希函数方法有1、除留余数法除留余数法是用关键字k除以某个不大于哈希长度m的数p (p<=m),将所得的余数作为哈希地址的方法。h(k) = k mod p这种方法的关键是选好p,使得元素集合中的每一个关键字通过该函数转换后映射到哈希表范围内的任意地址上的概率相等,从而减少发生冲突的可能性。2...原创 2020-09-23 16:54:21 · 1545 阅读 · 0 评论 -
哈希算法——哈希表
哈希表:根据设定的哈希函数H(key)和处理冲突的方法将一组关键字映射到一个有限的连续的地址集(区间)上,并以关键字在地址集中的“像”(H(key))作为记录在表中的存储位置,这种表便称为哈希表。所得存储位置称为哈希地址或散列地址。在记录的关键字和其存储位置之间建立一个确定的函数关系f,即将关键字为key的记录存储在f(key)的存储位置上,则对于给定值kval,若存在关键字等于kval的记录,则必在f(kval)的存储位置上。通常是设置一个一维数组来存放各个记录,f(key)便为数组下标。...原创 2020-09-23 16:12:21 · 625 阅读 · 0 评论 -
交换排序--冒泡排序
交换排序是通过两两比较待排序区相邻的两个元素,若两个元素次序相反,则交换位置。直到没有反序的元素为止。一、排序思路 冒泡排序通过无序区中相邻的两个元素间关键字的比较和位置的交换,使无序区中关键字最小元素像气泡一样往上冒。整个算法从最下面的元素开始(j=n-1;),直到无序区最小的元素到达最上端(j>i)。 冒泡排序优化,当第i趟时已经排好序了,但算法还会进行后面的几趟比较...原创 2018-05-04 20:52:20 · 242 阅读 · 0 评论 -
插入排序--希尔排序
一、希尔排序思路 希尔排序是一种分组插入方法。假设待排序的表为R[0 ...n-1],它先取一个小于n的数d1作为它的第一个增量,把表的元素分为d1组,所有相互之间相邻距离为d1的元素归为一组。在同一组内进行直接插入排序。然后取d2作为第二个增量,依次循环,直到增量为1,排序结束。二、希尔算法/*************************************************...原创 2018-05-03 21:45:23 · 158 阅读 · 0 评论 -
插入排序--折半插入排序
一、折半插入排序思路 折半插入排序又称二分插入排序。折半插入排序是通过折半查找方法现在R[0 ...i-1]中找到插入位置,在通过移动元素进行插入。折半插入和直接插入类似,只是将分散移动变为集体移动。即找到插入位置后,整体移动有序区中插入位置后的所有元素。 在R[low...high](初始时low=0,high=i-1)中通过折半查找方法找到插入位置R[high+1],在将R[hig...原创 2018-05-02 22:20:08 · 282 阅读 · 0 评论