Java工具箱-java.security

来源:互联网 发布:乐视网络高清机顶盒 编辑:程序博客网 时间:2024/05/23 00:44

  互联网应用有大量敏感数据在公网传输,存在被伪造、篡改、非法读取等风险。数据加密目前是对信息进行保护的一种最可靠的办法。它利用密码技术对信息进行加密,实现信息隐蔽,从而起到保护信息的安全的作用。

加密算法概述

  加密算法分为不可逆加密算法和可逆加密算法,可逆加密算法又分为对称性加密算法和非对称加密算法。
  不可逆加密算法加密后的内容无法还原成原文,一般用于带有明文数据的防篡改延签和口令加密。不可逆加密算法不存在密钥保管和分发问题,非常适合在分布式网络系统上使用,但因加密计算复杂,工作量相当繁重,通常只在数据量有限的情形下使用。
  对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法,特点是算法公开、计算量小、加密速度快、加密效率高。一般用于自己加密自己解密的场景。
  非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。非对称加密算法适合数据传输双方都需要对数据进行加密解密的场景。如果由我们生成密钥对,则我们将公开密钥提供给对方。

加密算法分类:

  • 不可逆加密算法:MD5,SHA(SHA1,SHA2、SHA256、SHA512)
  • 对称加密算法:AES,DES,3DES
  • 非对称加密算法:RSA,DSA,ECC

算法选择(从性能和安全综合考虑)

  • 不可逆加密算法:MD5
  • 对称加密:AES
  • 非对称加密算法:RSA

非对称加密算法性能比对称加密低几个数量级5,在满足安全的情况下尽量使用对称加密。

Java 加密体系结构(JCA)

  JCA(Java Cryptography Architecture) JCA是一个提供访问和开发密码功能的框架。因为历史原因,Cryptography API位于两个独立的包内: java.security(Signature, MessageDigest)和javax.crypto(Cipher, KeyAgreement)。java.security.Provider抽象了Java security provider。Java内置的Provider提供了许多通用的密码算法,比如:RSA, DSA, ECDSA等签名算法、DES, AES, ARCFOUR等加密算法、MD5, SHA-1, SHA-256等信息摘要算法、还有Diffie-Hellman和ECDH这样的密钥协商算法。程序可能通过provider的名字随意地请求一个指定provider的实现。