如何将ASCII编码RSA公钥转换为publickey对象``?页面传到后台是公钥的ASCII编码字符串.
现在在后台这么写的:
X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(pubKey.getBytes());
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
RSAPublicKey publicKey = (RSAPublicKey)keyFactory.generatePublic(pubKeySpec);执行的时候异常:java.security.InvalidKeyException: invalid key format请教下应该怎么写``
现在在后台这么写的:
X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(pubKey.getBytes());
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
RSAPublicKey publicKey = (RSAPublicKey)keyFactory.generatePublic(pubKeySpec);执行的时候异常:java.security.InvalidKeyException: invalid key format请教下应该怎么写``
解决方案 »
- 【求助】为什么html跳转servlet路径老错啊
- 泪奔---求高手:使java服务器端支持多线程下载 ,文件成功下载了,可是后台稀里哗啦的报错
- HQL
- 请问我该怎么理解Hibernate持久层?它到底该怎么用呢?谢谢.
- javabean的命名规范!
- Could not instantiate bean class [com.zhi.base.BaseAction]: Constructor threw ex
- 访问tomcat的admin
- ECLIPSE整合jboss,jboss启动时出现java.net.BindException: Address already in use: JVM_Bind:8080!在线等!!!
- 集思广义:关于JAVA技术的研发的方向,请各位提出方向的同时,指出他的应用面,优势劣势等!
- 这又是什么问题?
- 本人初学,找不出错误,求大神指教
- hql 查询
import java.security.PublicKey;
import java.security.cert.Certificate;
import java.security.cert.CertificateFactory;public class Cert { public static void main(String[] args) throws Exception {
CertificateFactory factory = CertificateFactory.getInstance("X.509");
Certificate cert = factory.generateCertificate(new FileInputStream("e:/security/test.cert.pem"));
PublicKey pubKey = cert.getPublicKey();
}
}
....
....
-----END CERTIFICATE-----贴不全,CSDN 说这有非法字符!
例如这样的:
30818902818100B6FA647C106B69AD474145F0A5EE8FC7B760E77B049CCB059C0D8E7B15DBE63DD4B260A84E6D14748553287A022A39C0F69740978088660CC7E26069FE11BFE0BD2F296771887AF632FB2F5DB0452ADD4D8E00DBC679A9AB95C61CDB2B4B072E37737140DD0131745FCACDF8638309E552F03F0CD00A6313EF72E8E19051BE290203010001
请问我如何在后台把这个字符串变成公钥格式呢`?
import java.security.PublicKey;
import java.security.spec.KeySpec;
import java.security.spec.X509EncodedKeySpec;public class Cert { public static void main(String[] args) throws Exception {
String str = "30818902818100B6FA647C106B69AD474145F0A5EE8FC7B760" +
"E77B049CCB059C0D8E7B15DBE63DD4B260A84E6D1474855328" +
"7A022A39C0F69740978088660CC7E26069FE11BFE0BD2F2967" +
"71887AF632FB2F5DB0452ADD4D8E00DBC679A9AB95C61CDB2B" +
"4B072E37737140DD0131745FCACDF8638309E552F03F0CD00A" +
"6313EF72E8E19051BE290203010001";
System.out.println(str.length());
byte[] keyBytes = toBytes(str);
KeySpec keySpec = new X509EncodedKeySpec(keyBytes);
KeyFactory factory = KeyFactory.getInstance("RSA");
PublicKey publicKey = factory.generatePublic(keySpec);
}
private static byte[] toBytes(String str) {
if(str == null) {
throw new IllegalArgumentException("binary string is null");
}
char[] chs = str.toCharArray();
byte[] bys = new byte[chs.length / 2];
int offset = 0;
int k = 0;
while(k < chs.length) {
bys[offset++] = (byte)((toInt(chs[k++]) << 4) | toInt(chs[k++]));
}
return bys;
}
private static int toInt(char a) {
if(a >= '0' && a <= '9') {
return a - '0';
}
if(a >= 'a' && a <= 'f') {
return a - 'a' + 10;
}
if(a >= 'A' && a <= 'F') {
return a - 'A' + 10;
}
throw new IllegalArgumentException("parameter \"" + a + "\"is not hex number!");
}
}
你好,想向你请教一下我现在有一个公钥文件(编过码的)文件的内容如下
-----BEGIN PUBLIC KEY-----
MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQCV45mPNyaOpkDJwMN8UMK7uVf6
9GrzwWdnEog2wyzATCpltKCsQvFVl35pbYzF9d0jf0AsbgIu6kYejTQSnDaEJIKc
Vlj4w4bUJ+K+tMBhOBfGyTQoZ2vQyO5D7B1gL0gmg2cToRskN8cAZdU1/gsObvii
NdgZ8bFARJXd3qDH2QIBAw==
-----END PUBLIC KEY-----
现在我也不知道他是什么格式的编码,现在我需要将他转换成RSA的公钥进行加密,请问一下该怎么弄?