密钥生成器
有两个接口表示两种主要类型的密钥生成器,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.