密钥生成器KeyGenerator

文章目录

    • @[toc]
  • 一、介绍
  • 二、示例

一、介绍

  • 秘钥生成器,也就是根据算法类型随机生成一个秘钥,大部分用在单向加密、对称加密

二、示例

import javax.crypto.KeyGenerator;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;

/**
 * KeyGenerator
 *
 * @author kimi
 * @date 2023/1/29
 */
public class KeyGeneratorUtils{

    /** AES 算法 */
    private static final String ALGORITHM_AES="AES";


    /**
     * 生成AES算法密钥
     * @return
     * @throws NoSuchAlgorithmException
     */
    public static String generate() throws NoSuchAlgorithmException{
        /**
         * 创建KeyGenerator实例
         *      algorithm密钥算法
         *          AES
         *          DES
         *          DESede
         *          HmacSHA1
         *          HmacSHA224
         *          HmacSHA256
         *          HmacSHA384
         *          HmacSHA512
         *          RC2
         */
        KeyGenerator keyGenerator = KeyGenerator.getInstance(ALGORITHM_AES);
        //指定生成密钥的大小;AES密钥长度只能=128、192、256
        keyGenerator.init(256);
        //指定生成密钥随机源:keyGenerator.init(SecureRandom secureRandom)
        //指定生成密钥大小、随机源:keyGenerator.init(int size, SecureRandom secureRandom)

        /**
         * 借助Base64转换生成的密钥
         *      通常加密后要把密钥保存下来,解密时使用密钥重建SecertKey,生成的密钥是字节数组不利于保存,所以借助Base64转换成字符串
         *      jwU9T09QMJY8kMMgfxqE6DJhczLSGYjen0wlTOQeEOc=
         */
        return Base64.getEncoder().encodeToString(keyGenerator.generateKey().getEncoded());
    }
}

你可能感兴趣的:(加密解密,java,开发语言)