zoukankan      html  css  js  c++  java
  • 几种加密方式

    1. Base64加密方式(可逆)

    Base64中的可打印字符包括字母A-Z/a-z/数组0-9/ 加号’+’斜杠’/’ 这样共有62个字符

    Base64 ios7之后加入系统库

    // 加密  
        public static String getBase64(String str) {  
            byte[] b = null;  
            String s = null;  
            try {  
                b = str.getBytes("utf-8");  
            } catch (UnsupportedEncodingException e) {  
                e.printStackTrace();  
            }  
            if (b != null) {  
                s = new BASE64Encoder().encode(b);  
            }  
            return s;  
        }  
      
        // 解密  
        public static String getFromBase64(String s) {  
            byte[] b = null;  
            String result = null;  
            if (s != null) {  
                BASE64Decoder decoder = new BASE64Decoder();  
                try {  
                    b = decoder.decodeBuffer(s);  
                    result = new String(b, "utf-8");  
                } catch (Exception e) {  
                    e.printStackTrace();  
                }  
            }  
            return result;  
        }  

    2 MD5加密

    Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护

    是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。

    根据输出值,不能得到原始的明文,即其过程不可逆

    
    
    import java.security.MessageDigest

    import sun.misc.BASE64Encoder;
    /**
    * 对字符串加密的方法 * @param str * @return */ public static String toMessageDigest(String str) { try { MessageDigest md = MessageDigest.getInstance("MD5"); BASE64Encoder encoder = new BASE64Encoder(); return encoder.encode(md.digest(str.getBytes("utf-8"))); } catch (Exception e) { throw new RuntimeException(e.getMessage()); } }

    MD5算法具有以下特点:

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

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

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

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

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

    MD5加盐

    3 钥匙串加密方式

    iCloud钥匙串,苹果给我们提供的密码保存的解决方案,iOS7之后有的

    存沙盒:

    1、如果手机越狱,密码容易被窃取。

    2、当软件更新时,沙盒里的内容是不被删除的。但是,如果将软件卸载后重装,沙盒里的数据就没有了。

    3、每个APP的沙盒是相对独立的,密码无法共用。

    存钥匙串里:

    1、苹果提供的安全方案,rsa加密,相对安全。

    2、无论软件更新或删除,密码都存在,都可以自动登录。

    3、同一公司的APP密码是可以共用的。

    4 对称加密算法

    优点:算法公开、计算量小、加密速度快、加密效率高、可逆

    缺点:双方使用相同钥匙,安全性得不到保证

    现状:对称加密的速度比公钥加密快很多,在很多场合都需要对称加密,

    算法: 在对称加密算法中常用的算法有:DES3DES、TDEA、Blowfish、RC2、RC4、RC5IDEA、SKIPJACK、AES等。不同算法的实现机制不同,可参考对应算法的详细资料

    相较于DES和3DES算法而言,AES算法有着更高的速度和资源使用效率,安全级别也较之更高了,被称为下一代加密标准

    nECB :电子代码本,就是说每个块都是独立加密的

    nCBC :密码块链,使用一个密钥和一个初始化向量 (IV)对数据执行加密转换

    ECB和CBC区别:CBC更加复杂更加安全,里面加入了8位的向量(8个0的话结果等于ECB)。在明文里面改一个字母,ECB密文对应的那一行会改变,CBC密文从那一行往后都会改变。

    5 RSA加密(非对称加密算法)(Secruty.framework系统库)

    非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)

    非对称加密中使用的主要算法有:RSAElgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。

    公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密

    特点:

    非对称密码体制的特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快

    对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了

    但是RSA加密算法效率较差,对大型数据加密时间很长,一般用于小数据。

  • 相关阅读:
    [洛谷P3403] 跳楼机
    [hdu4630] No Pain No Game
    django-rest-swagger 使用【转】
    Django REST framework入门 (转自中文文档)
    model补充验证钩子函数 性能优化等
    python新动态执行 文件头标识 禁止断言
    Dmango cxrf 自定义分页 缓存 session 序列化 信号量 知识点
    pytho 解析fiddler 导出的har文件代码,自动录入api
    django model 操作总结
    django FBV +CBV 视图处理方式总结
  • 原文地址:https://www.cnblogs.com/mytzq/p/8038539.html
Copyright © 2011-2022 走看看