序言
如果我们要消费的一段字符串没有唯一标识,我们该如何防止重复消费.cuiyaonan2000@163.com
背景信息
加密
加密技术是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密)。
算法将普通的信息或者可以理解的信息与一串数字,转换成不可理解的密文的步骤。在安全保密中,可通过适当的加密技术和密钥管理机制来保证网络的信息通信安全。
AES
密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。---------对称加密
这个标准用来替代原先的 DES(Data Encryption Standard),已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院 (NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。 2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一 [1] 。
高级加密标准算法从很多方面解决了令人担忧的问题。实际上,攻击 数据加密标准的那些手段对于高级加密标准算法本身并没有效果。 如果采用真正的128位加密技术甚至256位加密技术,蛮力攻击要取得成功需要耗费相当长的时间。
哈希
Hash,一般翻译做"散列”,也有直接音译为"哈希"的,就是把任意长度的输,通过散列算法,变换成固定长度的输出,该输出就是散列值。----这里是重点,任意长度的输入,固定长度的输出cuiyaonan2000@163.com
这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。-----因此相同的输出可能来源于不同的输入,只是概率极小cuiyaonan2000@163.com,简单的说就是一种将任意长度的消息压缩到某一固定长度的信息摘要的函数。
HASH主要用于信息安全领域中加密算法,他把一些不同长度的信息转化成杂乱的 128位的编码里,叫做HASH值. 也可以说, hash就是找到一种数据内容和数据存放地址之间的映射关系。
Hash算法在信息安全方面的应用主要体现在以下的3个方面:
1) 文件校验
我们比较熟悉的校验算法有奇偶校验和CRC校验,这2种校验并没有抗数据篡改的能力,它们一定程度上能检测并纠正数据传输中的信道误码,但却不能防止对数据的恶意破坏。
MD5 Hash算法的"数字指纹"特性,使它成为目前应用最广泛的一种文件完整性校验和(Checksum)算法,不少Unix系统有提供计算md5 checksum的命令。
2) 数字签名
Hash 算法也是现代密码体系中的一个重要组成部分。由于非对称算法的运算速度较慢,所以在数字签名协议中,单向散列函数扮演了一个重要的角色。 对 Hash 值,又称"数字摘要"进行数字签名,在统计上可以认为与对文件本身进行数字签名是等效的。而且这样的协议还有其他的优点。----数字签名对比非对称加密算法的优点就是速度快
3) 鉴权协议
如下的鉴权协议又被称作"挑战--认证模式:在传输信道是可被侦听,但不可被篡改的情况下,这是一种简单而安全的方法。
MD5
查看百度词条的介绍
MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的 密码散列函数,可以产生出一个128位(16 字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家 罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代 MD4算法。这套算法的程序在 RFC 1321 标准中被加以规范。1996年后该算法被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他算法,如 SHA-2。2004年,证实MD5算法 无法防止碰撞(collision),因此不适用于安全性认证 ,如 SSL 公开密钥认证或是 数字签名 等用途。
如上可以了解MD5是根据一段字符串生成16个字节的一段散列值,同时可以看到MD5无法防止碰撞.即在极小的范围内还是有概率 产生这种情况: 相同的散列值可能来源于不同的字符串.
国家牛人辈出,关于碰撞的最低概率可以参考如下的内容cuiyaonan2000@163.com
SHA
通过MD5可知,SHA是用于替换MD5的技术.
安全散列算法(英语:Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法。 能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。且若输入的消息不同,它们对应到不同字符串的机率很高。----但是还有有概率产生数据碰撞,但是概率要比MD5小的多 cuiyaonan2000@163.com
SHA家族的五个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512,由美国国家安全局(NSA)所设计,并由美国国家标准与技术研究院(NIST)发布;是美国的政府标准。后四者有时并称为SHA-2。SHA-1在许多安全协定中广为使用,包括TLS和SSL、PGP、SSH、S/MIME和IPsec,曾被视为是MD5(更早之前被广为使用的杂凑函数)的后继者。但SHA-1的安全性如今被密码学家严重质疑;虽然至今尚未出现对SHA-2有效的攻击,它的算法跟SHA-1基本上仍然相似;因此有些人开始发展其他替代的杂凑算法。
示例
SHA示例:https://blog.csdn.net/Alian_1223/article/details/117443522