名词说明
- Hash
哈希算法(Hash)又称摘要算法(Digest),它的作用是:对任意一组输入数据进行计算,得到一个固定长度的输出摘要。哈希算法的目的就是为了验证原始数据是否被篡改。- 特点就是:相同的输入一定得到相同的输出;不同的输入大概率得到不同的输出
- hash算法要求:碰撞概率低;不能猜测输出
- 常见hash算法:MD5(16bytes)、SHA-1(20bytes)、SHA-256(32bytes)
- 哈希碰撞
哈希碰撞是指,两个不同的输入得到了相同的输出 - 消息摘要算法:
加密过程不需要密钥,并且经过加密的数据无法被解密;只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文,主要应用在“数字签名”领域(比如对用户密码加密);著名的摘要算法有RSA公司的MD5算法和SHA-1算法及其大量的变体。 - MD5
MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式 (也就是把一个任意长度的字节串变换成一定长的十六进制数字串)(128位)。 - 压缩性: 任意长度的数据,算出的MD5值长度都是固定的。
- 容易计算: 从原数据计算出MD5值很容易。
- 抗修改性: 对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
- 强抗碰撞: 已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
- !!!MD5因为输出长度较短,短时间内破解是可能的,目前已经不推荐使用
- SHA1
SHA-1与MD5 的最大区别在于其摘要比MD5 摘要长32 比特(160为) - 加密算法
将普通的文本(或者可以理解的信息)与一串数字(密钥)的结合,产生不可理解的密文的步骤。 - 密钥
是用来对数据进行编码和解码的一种算法 - 对称加密
加密密钥和解密密钥相同,对称加密以数据加密标准(DES,Data Encryption Standard 56位)算法为典型代表。另一个对称密钥加密系统是国际数据加密算法(IDEA 128位),它比DES的加密性好(类似于三重DES),而且对计算机功能要求也没有那么高。IDEA加密标准由PGP(Pretty Good Privacy)系统使用。(现在算力容易破解,少用) - 非对称加密
加密密钥和解密密钥不同,加密密钥可以公开而解密密钥需要保密,非对称加密通常以RSA(Rivest Shamir Adleman)算法为代表。(已被ISO推荐为公钥数据加密标准) - Base64
所谓Base64,就是说选出64个字符----小写字母a-z、大写字母A-Z、数字0-9、符号"+"、"/"(再加上作为垫字的"=",实际上是65个字符)----作为一个基本字符集。然后,其他所有符号都转换成这个字符集中的字符。即要求把每三个8Bit的字节转换为四个6Bit的字节(38 = 46 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。原文的字节不够的地方可以用全0来补足,转换时 Base64编码用=号来代替(Base64编码会以一个或两个等号结束)。
- Base64是一种任意二进制到文本字符串的编码方法,用记事本打开exe、jpg、pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的文本处理软件能处理二进制数据,就需要一个二进制到字符串的转换方法。Base64是一种最常见的二进制编码方法。
- Base64是一种通过查表的编码方法,不能用于加密,即使使用自定义的编码表也不行。
- Base64适用于小段内容的编码,比如数字证书签名、Cookie的内容等。
-
数字签名:
数字签名主要用到了非对称密钥加密技术与数字摘要技术,数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过。 -
彩虹表
就是预先计算好的常用口令和它们的MD5的对照表,黑客利用这个破密码hash,所以密码不建议用常用口令,比如“hao123”,“19950505”等。如果用户使用了常用口令,我们也可以采取措施来抵御彩虹表攻击,方法是对每个口令额外添加随机数,这个方法称之为加盐(salt):digest = md5(salt+inputPassword)