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.待續。。。