Android数据加密介绍

来源:互联网 发布:怎么解析服务器域名 编辑:程序博客网 时间:2024/06/05 07:58

Android数据加密介绍

信息安全

  • 机密性:为了防止信息被窃听
  • 完整性:为了防止信息被篡改
  • 认证:为了防止攻击者伪装成真正的发送者
  • 不可否认性:为了防止发送者事后否认自己没有做过

加密方式

java中使用了多种加密方式。常见的加密方式有两种:

  • 对称加密:

    加密和解密使用同一个密钥:所有的数据,变成byte数组之后,每个数 + 1
    算法:DES、DES3、AES、RC5、Blowfish等
    分组密码,即以分组为单位进行处理的密码算法
    初始化向量IV:与分组长度一致,加解密一致
    存在密钥配送问题

  • 非对称加密

    加密用公钥,解密用私钥
    主要基于数学上困难的问题来保证机密性
    算法:RSA、DSA、ElGamal、Rabin等
    公钥密码处理速度远远低于对称密码

  • 混合密码

    对称密码和公钥密码相结合
    用对称密码来加密消息
    用公钥密码来加密对称密码的密钥
    对称密码的密钥是临时生成的会话密钥

  • 单向散列函数

    MD4、MD5、SHA-1、SHA-256、SHA-384、SHA-512、SHA-3等等

  • 消息认证码

    GUID :UUID,不允许重复的场景,使用UUID

    消息认证码(message authentication code)是一种确认完整性并进行认证的技术,简称为 MAC
    输入包括消息和共享密钥,输出固定长度的数据,称为MAC值
    比单向散列函数多了一个共享密钥
    普遍的实现算法:HMAC

  • 证书一般包含:主体公钥值、主体标识符信息、证书有效期、颁发者标识符信息、颁发者的数字签名.证书标准:X.509

通过私钥去权威机构认证,产生一个证书和公钥。私钥产生证书,公钥验证证书。
但是如果是用私钥对消息进行签名,效率很低,所以一般,私钥是对消息的散列值进行签名。

java加密API规范和参考架构

http://www.cis.upenn.edu/~bcpierce/courses/629/jdkdocs/guide/security/CryptoSpec.html
http://docs.oracle.com/javase/1.5.0/docs/guide/security/CryptoSpec.html#AppA Appendix A:附录A 
原创粉丝点击