密钥生成器

有两个接口表示两种主要类型的密钥生成器,ByteKeyGenerator
和StringKeyGenerator,可以使用工厂类KeyGenerators直接构建它们,StringKeyGenerator一般用于生成哈希化或者加密算法的盐值

public interface StringKeyGenerator {

	String generateKey();

}

生成一个8字节的密钥,将其编码成十六进制字符串

public interface BytesKeyGenerator {

	/**
	 * Get the length, in bytes, of keys created by this generator. Most unique keys are
	 * at least 8 bytes in length.
	 */
	int getKeyLength();

	/**
	 * Generate a new key.
	 */
	byte[] generateKey();

}

生成一个8字节密钥,可以通过重载的secureRandom方法指定长度

    @Test
    void contextLoads() {
        var stringKeyGenerator = KeyGenerators.string();
        System.out.println(stringKeyGenerator.generateKey());

        var bytesKeyGenerator = KeyGenerators.secureRandom();
        System.out.println(bytesKeyGenerator.generateKey());
        System.out.println(bytesKeyGenerator.getKeyLength());
    }

有时我们需要将相同的键每次返回相同的键值这时候我们可以使用KeyGenerators.shared()方法

        var shared = KeyGenerators.shared(8);
        var key1 = shared.generateKey();
        var key2 = shared.generateKey();
        Assertions.assertThat(key1).isEqualTo(key2);

Q.E.D.