关于加密解密

作者: 程序_猿 | 来源:发表于2016-09-21 23:35 被阅读296次

    1.base64:
    1>严格的说 base64 并不算是加密,只是一种编码的算法, base64 无论是加密还是解密,都是直接操作二进制数据,系统中提供了关于 base64的加密解密的方法,都是以 base64 开头
    2>base64可以将任意的二进制数据(例如图片/视频/文件等的二进制数据)编码成字符串,在网络上传输,
    3>base64编码后的数据由a-z,A-Z,/ + =这些符号表示
    4>base64编码之后数据会变大

    2.加密的要素:算法和秘钥,算法一般是公开的,需要做的是保护秘钥的安全
    1>对称加密算法:
    加密解密用的都是相同的秘钥,
    速度快,适合对大数据加密(例如视频)
    典型的算法: DES 3DES AES

    2>非对称加密算法:
    算法公开,可逆的加密算法
    用公钥加密,用私钥解密, (也可以用私钥加密,用公钥解密)
    速度慢,适合对小数据加密,但是更加安全
    典型的算法: RSA

    3>普遍的加密方法:
    原始数据用对称加密,在使用 非对称加密 将 对称加密的密钥 进行加密,然后在从网络上传输

    4>散列算法:
    散列算法经常用来给密码进行加密,(防止后台工作人员窃密)
    不可逆加密: MD5 / SHA1 / SHA256 / SHA512

    5>MD5 加密后是32字节
    MD5虽然是不可逆的算法,(但是可以暴力破解,解决的办法是加盐)
    MD5加盐:原密码+一个复杂的字符串,然后在进行 MD5运算(复杂程度还不够)
    HMAC:原密码+一个字符串,进行 MD5运算,将运算的结果+原密码在进行 MD5加密,(从网络截取数据,并不破解,直接发送给服务器,也可以达到解密的效果,解决办法+时间标识)
    MD5加时间戳:
    将一个字符串,进行 MD5加密计算,得到一个 MD5值
    把原密码和之前生成的 MD5值,再进行 HMAC加密
    从服务器获取当前时间到分钟的字符串
    将第二部步产生的HMAC 值+时间 和第一步产生的 MD5值进行HMAC加密

    6>钥匙串
    将密码保存到本地,不能保存原文,需要进行加密处理,以防沙盒文件漏,通过系统提供的钥匙串功能,可以在本地保存密码,系统使用 AES 的方式对密码进行加密
    使用SSKeychain 框架进行钥匙串操作

    7>ECB 和 CBC 只是加密方式并不是加密算法,传统的 AES 和 DES 都支持这两种方式
    ECB: 电子密码本 将要加密的数据分块,分别加密,数据块的加密过程相互独立,互不影响.例如,相同的数据块加密结果是相同的
    CBC: 密码链条 将要加密的数据分块,分别加密,后加密的数据块依赖于前面的加密结果.例如,相同的数据块加密结果是不同的

    8>DES/3DES/AES
    DES:数据加密标准(用的很少因为强度不够)
    3DES:使用3个密钥,对相同的数据执行3次加密,强度增强(维护密钥比较麻烦)
    AES:高级加密标准(目前美国国家安全局,苹果钥匙串使用的都是 AES)

    9>RSA
    非对称加密
    算法强度复杂,加密依赖于算法与密钥
    加密解密速度慢

    相关文章

      网友评论

        本文标题:关于加密解密

        本文链接:https://www.haomeiwen.com/subject/bytzettx.html