任何一段信息文字,都可以对应一个不太长的随机数,作为区别它和其它信息的指纹(Fingerprint)。只要算法设计的好,任何两段信息的指纹都很难重复,就如同人类的指纹一样。信息指纹在加密、信息压缩和处理中有着广泛的应用。
我们在图论和网络爬虫一文中提到,为了防止重复下载同一个网页,我们需要在哈希表中纪录已经访问过的网址(URL)。但是在哈希表中以字符串的形式直接存储网址,既费内存空间,又浪费查找时间。现在的网址一般都较长,比如,如果在 Google 或者百度在查找数学之美,对应的网址长度在一百个字符以上。下面是百度的链接
http://www.baidu.com/s?ie=gb2312&bs=%CA%FD%D1%A7%D6%AE%C3%C0&sr=&z=&cl=3&f=8
&wd=%CE%E2%BE%FC+%CA%FD%D1%A7%D6%AE%C3%C0&ct=0
假定网址的平均长度为一百个字符,那么存贮 200 亿个网址本身至少需要 2 TB,即两千 GB 的容量,考虑到哈希表的存储效率一般只有 50%,实际需要的内存在 4 TB以上。即使把这些网址放到了计算机的内存中,由于网址长度不固定,以字符串的形式查找的效率会很低。因此,我们如果能够找到一个函数,将这 200 亿个网址随机地映射到128 二进位即 16 个字节的整数空间,比如将上面那个很长的字符串对应成一个如下的随机数:
893249432984398432980545454543
这样每个网址只需要占用 16 个字节而不是原来的一百个。这就能把存储网址的内存需求量降低到原来的 1/6。这个16 个字节的随机数,就称做该网址的信息指纹(Fingerprint)。可以证明,只要产生随机数的算法足够好,可以保证几乎不可能有两个字符串的指纹相同,就如同不可能有两个人的指纹相同一样。由于指纹是固定的 128 位整数,因此查找的计算量比字符串比较小得多。网络爬虫在下载网页时,它将访问过的网页的网址都变成一个个信息指纹,存到哈希表中,每当遇到一个新网址时,计算机就计算出它的指纹,然后比较该指纹是否已经在哈希表中,来决定是否下载这个网页。这种整数的查找比原来字符串查找,可以快几倍到几十倍。
产生信息指纹的关键算法是伪随机数产生器算法(prng)。最早的 prng 算法是由计算机之父冯诺伊曼提出来的。他的办法非常简单,就是将一个数的平方掐头去尾,取中间的几位数。比如一个四位的二进制数 1001(相当于十进制的9),其平方为 01010001 (十进制的 81)掐头去尾剩下中间的四位 0100。当然这种方法产生的数字并不很随机,也就是说两个不同信息很有可能有同一指纹。现在常用的 MersenneTwister 算法要好得多。
信息指纹的用途远不止网址的消重,信息指纹的的孪生兄弟是密码。信息指纹的一个特征是其不可逆性, 也就是说,
无法根据信息指纹推出原有信息,这种性质, 正是网络加密传输所需要的。比如说,一个网站可以根据用户的Cookie 识别不同用户,这个 cookie 就是信息指纹。但是网站无法根据信息指纹了解用户的身份,这样就可以保护用户的隐私。在互联网上,加密的可靠性,取决于是否很难人为地找到拥有同一指纹的信息, 比如一个黑客是否能随意产生用户的 cookie。从加密的角度讲 MersenneTwister,算法并不好,因为它产生的随机数有相关性。
互联网上加密要用基于加密伪随机数产生器(csprng)。常用的算法有 MD5 或者 SHA1 等标准,它们可以将不定长的信息变成定长的 128 二进位或者 160 二进位随机数。值得一提的事,SHA1 以前被认为是没有漏洞的,现在已经被中国的王小云教授证明存在漏洞。但是大家不必恐慌, 因为这和黑客能真正攻破你的注册信息是还两回事。
信息指纹的虽然历史很悠久,但真正的广泛应用是在有了互联网以后,这几年才渐渐热门起来。
分享到:
相关推荐
数学形态学是一门基于集合论的数学分支,主要用于图像处理和分析。该学科起源于1964年,由法国的J. Serra和G. Matheron在铁矿石研究中提出,他们通过“击中/击不中变换”为形态学提供了理论基础。数学形态学的核心...
#### 一、应用数学的概念及其在信息化领域的应用 **应用数学**是指将数学方法与理论应用于解决实际问题的一门学科。它不仅仅局限于数学内部的研究,而是广泛地应用于自然科学、工程技术、经济管理等多个领域。在...
6. 实现与应用:在MATLAB环境中,可以编写脚本或函数来实现整个指纹识别流程。MATLAB的图形用户界面(GUI)工具箱则可以帮助创建友好的交互界面,使用户可以直接在MATLAB平台上运行指纹识别系统。 总结起来,MATLAB...
食品质量指纹技术包括色谱、光谱以及其他图谱数据资料,其研究是建立在气相色谱—质谱(GC-MS)等现代仪器分析基础上,并与数学统计手段和计算机模拟方法学紧密相关。 食品质量指纹技术的研究进展主要表现在两个...
指纹仪开发包是一种专门用于构建基于指纹识别技术的软件应用的工具集。它通常包含了一系列的库文件、API接口、示例代码以及相关的文档资料,旨在简化开发过程,提高开发效率。下面将详细介绍这个开发包可能包含的...
在本"指纹识别技术详解源码"中,我们将深入探讨这一技术的实现原理、核心代码及其在C#编程语言中的应用。 首先,指纹识别的基础在于指纹的唯一性和稳定性。每个人的指纹都是独一无二的,且在一生中不会改变,这使得...
室内定位技术在物联网和智能建筑领域中扮演着重要的角色,特别是在GPS信号无法穿透的室内环境。RSS(Received Signal ...通过对代码的分析和数据的实验,可以深入理解RSS定位的工作原理及其在实际场景中的应用。
《8位bmp指纹库图片详解及其应用》 在信息技术领域,指纹识别技术因其独特性和稳定性,被广泛应用于安全认证、身份识别等多个场景。本资源提供的是一个包含410张8位bmp格式指纹图像的库,是研究和开发指纹识别系统...
“基于ARM 核的AT75C220及其在指纹识别系统中的应用”这篇文档很可能详细介绍了上述内容,并可能包含实际应用案例、性能评估以及如何利用AT75C220开发指纹识别系统的指南。通过阅读这份PDF,读者可以全面了解如何...
第三篇讲解如何亲手打造指纹模式识别系统,带领读者制作一个指纹模式识别系统的软硬件系统;第四篇讲解指纹模式识别应用技术基础,包括指纹模式识别技术各类应用的系统构造和源代码实现;第五篇讲解指纹电子产品技术...
综上所述,指纹识别技术在现代社会中的应用越来越广泛,特别是在小区门禁系统这样的应用场景下,不仅提升了安全性,还带来了极大的便利性。随着技术的不断进步和完善,相信未来指纹识别技术将会有更多创新性的应用...
MATLAB是一种强大的数学计算软件,广泛应用于图像处理、信号处理等领域,非常适合进行指纹识别的算法开发。 指纹识别的过程主要包括以下几个步骤: 1. **图像获取**:首先,我们需要获取指纹图像。这通常通过光学...
#### RADON变换及其应用 RADON变换是一种用于图像分析的数学工具,能够将二维图像转换为其在不同方向上的投影。在指纹图像增强领域,RADON变换被用来估计指纹图像的方向图和频率图,为后续的滤波操作提供关键参数。...
Matlab是一种强大的数学计算软件,常用于科学研究和工程应用,其丰富的库函数和易用性使得它成为实现指纹识别的理想平台。 首先,我们要理解指纹的基本概念。指纹是由皮肤上的脊线和谷线形成的独特模式,每个人的...
#### Gabor滤波器原理及其应用 Gabor滤波器是一种线性滤波器,以其创始人Dennis Gabor命名,广泛应用于图像处理和计算机视觉领域。它能够对图像进行方向性和频率性的选择性增强,特别适用于指纹图像的特征提取和...
本论文主要探讨了指纹识别的核心算法及其在MATLAB中的实现。 1.1 研究背景及意义 指纹识别技术源于生物识别领域,它利用指纹的不可复制性和终身不变性,为身份验证提供了高安全性。相比于传统的密码或钥匙,指纹...
特征提取是将处理后的图像转化为一系列独特的数学特征,如纹线的起点、终点、分叉点和环形点等;比对阶段则是将提取的特征与数据库中的预存指纹进行匹配,以确定身份。指纹识别的准确性受到算法性能、传感器质量和...
#### 信息指纹及其应用 信息指纹是一种独特的标识符,用于唯一地标识一段文本、图像或其他类型的数据。信息指纹技术在版权保护、内容去重等方面有着广泛的应用。通过计算数据的哈希值来生成指纹,即使原始数据发生...
随着信息技术的发展,安全性和隐私保护成为社会关注的焦点,而指纹识别作为非侵入式、稳定可靠的生物识别手段,被广泛应用在身份验证、安防、移动支付等多个领域。国内外对于指纹识别的研究广泛且深入,但仍有待优化...
本压缩包文件包含三篇硕士论文,分别探讨了不同的指纹识别算法及其在实际系统开发中的应用。以下是对这些论文内容的详细解读: 1. **基于PCNN(脉冲耦合神经网络)及遗传算法的指纹识别算法研究** PCNN是一种模拟...