哈希函数的三个性质
发布网友
发布时间:2022-04-23 06:33
我来回答
共4个回答
热心网友
时间:2023-10-05 12:03
哈希函数(Hash)自身具有三个特性:①可输入的字符串为任意大小;②产生固定大小(即存储规模)的输出,且这个大小可设定(随机数);③能进行有效计算。在比特币挖矿原理中,随机数是一个指定的解,基于某种率先加密的哈希函数具有单向性和隐秘性,既不能反向解出输入值也无法仅凭尝试找到输入值。此外,不同的输入产生不同的哈希函数,每次返回设定大小的位数形成信息摘要,极大地节省了网络存储规模。
Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数
热心网友
时间:2023-10-05 12:04
比特币是世界上第一种成功的加密货币,之前的尝试都没有像比特币这样有效解决有关货币的各种问题。
比特币本身是密码学发展的产物,利用了密码学中的很重要的“单向散列函数”以及数字签名两大技术来构建,今天我们来集中讲解单向散列函数的5种重要的特性。
哈希函数的特性:
单向散列函数(one-wayhash function),也就是通俗叫的哈希函数。
第一个特点:输入可以任意长度,输出是固定长度
哈希函数不用知道输入信息代表的是什么意思,也无所谓信息的长度有多长,只要输入hash函数出来的都是固定长度的比特值。比如非常有名的SHA256 哈希函数,输入任何值出来的都是256比特的0和1. 输入一本《三国演义》或者仅仅输入一个字母a,出来的都是256位比特长度的数据。
第二个特点:计算hash值的速度比较快
这一点经常被大家所忽略,似乎是习以为常的东西就不去在意,其实这一点同样重要,因为单向哈希的计算很快,才能保证加密或者验证的速度。
第三个特点,防碰撞特性(Collisionresistance)
X≠y,H(x)=H(y) 输入空间远远大于输出空间,比如256位的哈希值指的就是输出空间是2^256这么多,输入是无限可能的,输出是固定长度。
但是,目前没有找到没有好的方法去找出一个x能得到H(x)等于右边的值。
遍历所有输入的可能能去找到这个值,叫做brute-force暴力破解吗,也就是现在矿机所谓的“哈希碰撞”这个词的来源。
哈希防碰撞用处是保证上传和下载的数据是一样的,就是改一点点出来的结果差很多。举个例子,你输入的信息是一部《红楼梦》(当然电脑识别出来就是0和1),然后你在红楼梦的第100页的第五句话把一个逗号改成句号,然后输出的hash值就完全不同了。这就是哈希函数一个非常重要的特性。
但是collision resistance目前没有数学证明这个碰撞不会发生,MD5就是最好的例子,之前是很安全的,但是后来找到了破解方法
热心网友
时间:2023-10-05 12:04
哈希函数(Hash)自身具有三个特性:①可输入的字符串为任意大小;②产生固定大小(即存储规模)的输出,且这个大小可设定(随机数);③能进行有效计算。在比特币挖矿原理中,随机数是一个指定的解,基于某种率先加密的哈希函数具有单向性和隐秘性,既不能反向解出输入值也无法仅凭尝试找到输入值。此外,不同的输入产生不同的哈希函数,每次返回设定大小的位数形成信息摘要,极大地节省了网络存储规模。
热心网友
时间:2023-10-05 12:05
哈希函数的三个性质,哈希函数的三个性质其实比较简单,只要学过锐角三角函数直角坐标系。还有剑学过直角三角函数的这一系列的函数的话呢都非常的简单。