加密


1)、Base64

网络上最常见的用于传输8Bit字节代码的编码方式之一。Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式。Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。

常见于邮件、http加密,截取http信息,你就会发现登录操作的用户名、密码字段通过BASE64加密的。

一般采用这种加密手段十分好破解,他的加密实际作用不在于保密,经过BASE64编码后的字符串,全部都是由标准键盘上面的常规字符组成,这样编码后的字符串在网关之间传递不会产生UNICODE字符串不能识别或者丢失的现象。其实email就是用base64编码过后再发送的,然后接收的时候再还原。迅雷的“专用地址”也是用Base64加密的。
还有一种情况下用BASE64编码也很好,比如一个图片文件,或者其他任何二进制文件。可以用BASE64把它编码成字符串,这样用XML或者数据库就能直接以文本的方式来存储这些文件了。

2)、md5

Message-Digest Algorithm 5(信息-摘要算法5),安全的散列算法,是摘要算法且为不可逆算法。广泛用于加密和解密技术,常用于文件校验。不管文件多大,经过MD5后都能生成唯一的MD5值。好比现在的ISO校验,都是MD5校验。用来验证文件是否一致的。

MD5算法具有以下特点:

<1>、压缩性:任意长度的数据,算出的MD5值长度都是固定的。

<2>、容易计算:从原数据计算出MD5值很容易。

<3>、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

<4>、弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

<5>、强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。

MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1RIPEMD以及Haval等。

 

注意:MD5加密后再Base64编码,若单纯这样做,会有一个问题,那就是如果两个用户密码相同,就会导致在数据库中保存的数据一样, 可以用盐值来解决这个问题,就是给每个用户生成一个随机的盐值,在作保存和校验时,需要把用户的Salt值加入到密码原文中再作MD5运算,这样就可以使得相同的密码生成不同的编码.

3)、SHA

SHA(Secure Hash Algorithm,安全散列算法),不可逆,数字签名等密码学应用中重要的工具,被广泛地应用于电子商务等信息安全领域。虽然,SHA与MD5通过碰撞法都被破解了, 但是SHA仍然是公认的安全加密算法,较之MD5更为安全。

4)、HMAC

HMAC(Hash Message Authentication Code,散列消息鉴别码),基于密钥的Hash算法的认证协议。消息鉴别码实现鉴别的原理是,用公开函数和密钥产生一个固定长度的值作为认证标识,用这个 标识鉴别消息的完整性。使用一个密钥生成一个固定大小的小数据块,即MAC,并将其加入到消息中,然后传输。接收方利用与发送方共享的密钥进行鉴别认证等。

你可能感兴趣的:(加密,加密)