Java 从字符串中删除 public 键 header 和页脚
Java remove public key header and footer from string
您好,我正在尝试删除存储为字符串的 public 键的 header 和页脚。我设法通过删除第一个 "\n",
之前的所有内容来解决如何删除 "begin" header
-----BEGIN PUBLIC KEY-----\n
使用此代码。
String s1 = pKey.substring(pKey.indexOf("\n")+1);
然而,我正在努力删除从末尾到最后一个“\n”的页脚。
\n-----END PUBLIC KEY-----
必须有更简洁的方法来删除它们。
您可以使用
String s1 = pKey.replaceAll("^.*\n|\n-+END PUBLIC KEY-+$", "");
正则表达式详细信息
^.*\n
- 字符串的开头和带有换行符的第一行
|
- 或
\n-+END PUBLIC KEY-+$
- 换行符后跟 1+ -
个字符,然后是 END PUBLIC KEY
和一个或多个连字符,直到字符串结尾。
Public key 可以是 Some thing like this "-----BEGIN PUBLIC KEY----\nkey\n-----END PUBLIC KEY-----"
所以要从字符串中删除页眉和页脚,您可以使用
pKey.substring(pKey.indexOf("\n")+1, pKey.lastIndexOf("\n"));
或其他方式直接用 empty 替换页眉和页脚,因为它不会出现在 key
中
我一直在使用以下 util 方法从文本中解析 RSA public 密钥:
public static RSAPublicKey parsePKCS8PublicKey(String publicKey) {
publicKey = publicKey
.replace("-----BEGIN PUBLIC KEY-----", "")
.replace("-----END PUBLIC KEY-----", "")
.replace("\n", "")
.trim();
byte[] bytes = Base64.getDecoder().decode(publicKey);
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(bytes);
try {
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
return (RSAPublicKey) keyFactory.generatePublic(keySpec);
} catch (GeneralSecurityException e) {
throw new IllegalArgumentException(e);
}
}
您好,我正在尝试删除存储为字符串的 public 键的 header 和页脚。我设法通过删除第一个 "\n",
之前的所有内容来解决如何删除 "begin" header-----BEGIN PUBLIC KEY-----\n
使用此代码。
String s1 = pKey.substring(pKey.indexOf("\n")+1);
然而,我正在努力删除从末尾到最后一个“\n”的页脚。
\n-----END PUBLIC KEY-----
必须有更简洁的方法来删除它们。
您可以使用
String s1 = pKey.replaceAll("^.*\n|\n-+END PUBLIC KEY-+$", "");
正则表达式详细信息
^.*\n
- 字符串的开头和带有换行符的第一行|
- 或\n-+END PUBLIC KEY-+$
- 换行符后跟 1+-
个字符,然后是END PUBLIC KEY
和一个或多个连字符,直到字符串结尾。
Public key 可以是 Some thing like this "-----BEGIN PUBLIC KEY----\nkey\n-----END PUBLIC KEY-----"
所以要从字符串中删除页眉和页脚,您可以使用
pKey.substring(pKey.indexOf("\n")+1, pKey.lastIndexOf("\n"));
或其他方式直接用 empty 替换页眉和页脚,因为它不会出现在 key
中我一直在使用以下 util 方法从文本中解析 RSA public 密钥:
public static RSAPublicKey parsePKCS8PublicKey(String publicKey) {
publicKey = publicKey
.replace("-----BEGIN PUBLIC KEY-----", "")
.replace("-----END PUBLIC KEY-----", "")
.replace("\n", "")
.trim();
byte[] bytes = Base64.getDecoder().decode(publicKey);
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(bytes);
try {
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
return (RSAPublicKey) keyFactory.generatePublic(keySpec);
} catch (GeneralSecurityException e) {
throw new IllegalArgumentException(e);
}
}