private static final String PUBKEY_START = "-----BEGIN PUBLIC KEY-----";
private static final String PUBKEY_END = "-----END PUBLIC KEY-----";
/**
* 通过classpath获取公钥值
*/
public static RSAPublicKey getPubKeyObj() {
Resource res = new ClassPathResource(SecurityConstants.RSA_PUBLIC_KEY);
try (BufferedReader br = new BufferedReader(new InputStreamReader(res.getInputStream()))) {
String pubKey = br.lines().collect(Collectors.joining("\n"));
pubKey = pubKey.substring(PUBKEY_START.length(), pubKey.indexOf(PUBKEY_END));
return RsaUtils.getPublicKey(pubKey);
} catch (Exception ioe) {
ioe.printStackTrace();
}
return null;
}
以前也做过类似的项目,只不过在秘钥获取方面就做的相当的不太靠谱,偶然看到一个起码比原来项目强的多的,那没啥说的,先记录一下吧。
这一看,还真是有些东西没有使用过,这里先一一记录一下:
1.ClassPathResource
位于Spring核心core下,用以表达类路径下的资源。首先简要说明一下什么是classpath,顾名思义,就是存放*.class类文件的路径,或者说ClassLoader加载类时为找到 *.class文件的路径,对于部署在Tomcat上的WEB应用来说,/WEB-INF/classes和/WEB-INF/lib目录就是我们所指的classpath。
2.Collectors.joining("\n")
对字符串进行更优雅的连接,支持灵活的参数配置,可以指定字符串连接时的 分隔符,前缀 和 后缀 字符串。
3.待续。。。