写这个文章呢是因为以前看过一个面试题,如下
MD5算不算是加密,BASE64的安全与稳定性还有原理,二者在什么情况下使用分析,
那么我就根据这个面试题来聊一下吧
-
什么叫加密
直接上百度吧,下面是对于加密的解释
加密技术是最常用的安全来保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解自密)。
加密技术包括两个元素:算法和密钥。百算法是将普通的信息或者可以理解的信息与一串数字(密钥)结合,产生不可度理解的密文的步骤,密钥是用来对数据进行编问码和解密的一种算法。在安全保密中,可通过适当的钥加密技术和管理机制来保证网络的信息通答信安全。
再来看看md5的,本质上md5只是一种哈希算法,是不可逆的,所以md5并不能算是一种加密。
接下来说说base64,
Base64主要用于将不可打印的字符转换成可打印字符,或者简单的说将二进制数据编码成ASCII字符。
一种编码方式,有些协议传输非ASCII编码的时候需要使用base64编码后才能传输
可逆的,很容易解码
优点:可以将二进制数据转化为可打印字符,方便传输数据,对数据进行简单的加密,肉眼安全。
缺点:内容编码后体积变大,编码和解码需要额外工作量(顺带说下在url编码中可能出现特殊字符字符问题,如+,/ ,%等,需要注意下)。
既然说到了加密,那么接下来顺便说说下面这个问题
-
对称加密和非对称加密
对称加密: 加密和解密的秘钥使用的是同一个.
非对称加密: 与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。
对称加密算法: 密钥较短,破译困难,除了数据加密标准(DES),另一个对称密钥加密系统是国际数据加密算法(IDEA),它比DES的加密性好,且对计算机性能要求也没有那么高.
优点:
算法公开、计算量小、加密速度快、加密效率高
缺点:
在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。
常见的对称加密算法有: DES、3DES、Blowfish、IDEA、RC4、RC5、RC6 和 AES
非对称加密算法: 公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。
优点:
安全
缺点:
速度较慢
常见的非对称加密算法有: RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)
对称加密与非对称加密传送门
网友评论