美文网首页
Android中加密算法

Android中加密算法

作者: Jsonzhang | 来源:发表于2018-01-19 16:09 被阅读24次

    参考资料:http://www.cnblogs.com/whoislcj/p/5897533.html

    Android中的加密算法可以分为两类:对称加密非对称加密

    对称加密(DES、3DES、AES)

    • 概念
      对称加密算法中,发送方将明文和加密密匙经过特殊加密算法处理后,使其形成变成复杂的密文后发送出去。接受方用同样的密匙、同样加密算法的逆算法对密文进行解密。传统的DES加密算法只有56位密匙,最新AES技术拥有128位密匙。大大提高了安全性。

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

    • 缺点:发送方和接受方拥有同样的密匙,安全问题得不到保证;管理密匙会成为额外的负担;可逆。

    非对称加密(MD5、SHA、RSA、DSA)

    • 概念
      非对称加密算法中,发送方和接收方需要使用完全不同但又完全匹配的一对钥匙即 公匙私匙来加密和解密数据。如果发送方只想要接收方解密数据,发送方就需要先拿到接收方的公匙,并且发送方并不知道接收方的私匙。
    • 优点:安全,不可逆

    Base64

    Base64其实就是将数据进行base64编码传输,不算什么加密算法。

    异或加密

    原理:某个值异或一个数2次后,得到是本身
    异或运算中,如果某个字符(或数值)x 与 一个数值m 进行异或运算得到y,则再用y 与 m 进行异或运算就可以还原为 x ,因此应用这个原理可以实现数据的加密解密功能。

    //固定key的方式
    public byte[] encrypt(byte[] bytes) {
            int len = bytes.length;
            int key = 0x12;
            for (int i = 0; i < len; i++) {
                bytes[i] ^= key;
            }
            return bytes;
    }
    
    //测试
    byte[] bytes = encrypt("whoislcj".getBytes());//加密
    String str1 = new String(encrypt(bytes));//解密
    
    //不固定 (加密)
    public byte[] encrypt(byte[] bytes) {
            int len = bytes.length;
            int key = 0x12;
            for (int i = 0; i < len; i++) {
                bytes[i] = (byte) (bytes[i] ^ key);
                key = bytes[i];
            }
            return bytes;
        }
    
    //解密
     public byte[] decrypt(byte[] bytes) {
            int len = bytes.length;
            int key = 0x12;
            for (int i = len - 1; i > 0; i--) {
                bytes[i] = (byte) (bytes[i] ^ bytes[i - 1]);
            }
            bytes[0] = (byte) (bytes[0] ^ key);
            return bytes;
     }
    
    //测试
    byte[] bytes = encrypt("whoislcj".getBytes());//加密
    String str1 = new String(decrypt(bytes));//解密
    

    相关文章

      网友评论

          本文标题:Android中加密算法

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