我需要从Java的属性文件中读取@salt_key@和@Secret_key。i、 在Java代码中声明
首先在配置文件中存储secretKey和salt,如下所示:我需要从Java的属性文件中读取@salt_key@和@Secret_key。i、 在Java代码中声明,java,Java,首先在配置文件中存储secretKey和salt,如下所示: @Bean @Scope("prototype") protected SecretKeySpec secretkey() throws InvalidkeySpecException, NoSuchAlgorithamException { String secretKey = "Fra@d@15gt"; String salt = "Sa@t5dS3@"; K
@Bean
@Scope("prototype")
protected SecretKeySpec secretkey() throws InvalidkeySpecException,
NoSuchAlgorithamException {
String secretKey = "Fra@d@15gt";
String salt = "Sa@t5dS3@";
KeySpec spec = new PBEKeySpec(secretKey.toCharArray(), salt.getBytes(), 65536, 256);
SecretKey tmp = secretKeyFactory().generateSecret(spec);
SecretKeySpec secretKey1 = new SecretKeySpec(tmp.getEncoded(), "AES");
return secretKey1;
}
然后用java代码阅读它,如下所示:
secretKey=Fra@d@15gt
salt=Sa@t5dS3@
确保@Value中的字符串与您在配置文件中保存的内容完全匹配。
对于不同的环境,如生产/质量保证/本地,将有不同的secretKey和salt。对于每个环境,您可以使用特定于环境的值创建单独的文件。我不确定您的问题是否非常清楚。你的标题表明你想从Java代码和属性文件中读取值,这似乎是两件不同的事情。一般来说,我倾向于关闭没有正文的问题-好的问题总是有正文,即不仅仅是代码。实际上,我需要从java中的属性文件中读取secretKey&salt变量,而不是硬编码。
@Bean
@Scope("prototype")
protected SecretKeySpec secretkey(@Value("${secretKey}") final String secretKey,
@Value("${salt}") final String salt)
throws InvalidkeySpecException, NoSuchAlgorithamException {
KeySpec spec = new PBEKeySpec(secretKey.toCharArray(), salt.getBytes(), 65536, 256);
SecretKey tmp = secretKeyFactory().generateSecret(spec);
SecretKeySpec secretKey1 = new SecretKeySpec(tmp.getEncoded(), "AES");
return secretKey1;
}