美文网首页
Java-加密篇

Java-加密篇

作者: 张明学 | 来源:发表于2020-08-06 22:57 被阅读0次

    相关概念

    加密

    将明文(通过要先转换成byte[])通过特定的变换得到密文,目前常用的加密算法包括 对称加密的AES/DES,非对称加密的RSA/DSA/EC加密很重要的一点就是解密,无论多复杂的数学变换,一定可以通过相应的逆变换得到原始输入(密文到明文),这是的加密行为才有意义。

    hash(哈希变换)

    hash值又称散列值或者消息摘要,对输入的字符串或者二进制序列通过一定的变换得到固定长度的输出。常用的hash变换有MD5/SHA1/HmacSHA1/HmacMD5....等,hash变换的目的并不是让输入不可读取,而是让输入不可改变(改变即可发现)。

    字节变换

    将不易读取或者不易传输的数据(通用是二进制数据byte)转成易读取或者易传输的字符串(String),常用的字节变换操作有Base64,UrlEncoder

    相关api介绍

    Cipher

    主要用于加密行为,如进行AES/DES/RSA等加密行为。主要API有以下4步:

    1. 初始化对象static Cipher getInstance(String transformation)
      transformation的组成可以概括为algorithm/mode/padding 即:加密的方式/变换模式/字节填充规则。常用有以下组合:
      //括号数值为所需秘钥的长度
      AES/CBC/NoPadding (128)
      AES/CBC/PKCS5Padding (128)
      AES/ECB/NoPadding (128)
      AES/ECB/PKCS5Padding (128)
      DES/CBC/NoPadding (56)
      DES/CBC/PKCS5Padding (56)
      DES/ECB/NoPadding (56)
      DES/ECB/PKCS5Padding (56)
      DESede/CBC/NoPadding (168)
      DESede/CBC/PKCS5Padding (168)
      DESede/ECB/NoPadding (168)
      DESede/ECB/PKCS5Padding (168)
      RSA/ECB/PKCS1Padding (1024, 2048)
      RSA/ECB/OAEPWithSHA-1AndMGF1Padding (1024, 2048)
      RSA/ECB/OAEPWithSHA-256AndMGF1Padding (1024, 2048)
      
    2. 初始化参数void init(int opmode, Key key)
      opmode用于指定该对象是要进行加密还是解密,key`是加密所用的秘钥信息。
    3. 加密方法byte[] doFinal(byte[] input)

    Signature

    signature类用于提供数字签名,用于保证数据的完整性。
    获取方法:Signature signature = Signature.getInstance(algorithm),algorithm是数字签名算法,常用的算法有:

    NONEwithRSA
    MD2withRSA
    MD5withRSA
    SHA1withRSA
    SHA224withRSA
    SHA256withRSA
    SHA384withRSA
    SHA512withRSA
    NONEwithDSA
    SHA1withDSA
    SHA224withDSA
    SHA256withDSA
    NONEwithECDSA
    SHA1withECDSA
    SHA224withECDSA 
    SHA256withECDSA
    SHA384withECDSA
    SHA512withECDSA
    

    MessageDigest

    MessageDigest`主要是做hash变换(也称消息摘要或者散列值)
    常用方法:

    // 参数可以是 MD5,MD2,MD5,SHA-1,SHA-224,SHA-256,SHA-384,SHA-512
    MessageDigest messageDigest = MessageDigest.getInstance("MD5");
    byte[] bytes = messageDigest.digest("helloworld".getBytes());
    //将二进制数组转成base64字符串输出
    System.out.println("MD5哈希变换:" + byte2Base64(bytes));
    

    KeyGenerator

    用于生成秘钥, KeyGenerator.getInstance(String algorithm)支持的参数有:

    AES (128)
    DES (56)
    DESede (168)
    HmacSHA1
    HmacSHA256
    

    KeyPairGenerator

    KeyPairGenerator用于生成一对密钥对,用于做非对称加密操作。KeyPairGenerator.getInstance(String alorithm)的可用参数为:

    DSA
    RSA
    EC
    

    Java-加密篇
    Java加解-RSA加解密
    Java加密-Signature数据签名
    Java加密-AES加解密
    Java加密-密钥的保存与获取

    相关文章

      网友评论

          本文标题:Java-加密篇

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