直接将公匙BYTE数组转换为16进制的串啊
private static char hexTable[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
public static String toHexString(byte bytes[])
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < byteslength; i++)
{
char chars[] = new char[2];
int d = (bytes[i] & 240) >> 4;
int m = bytes[i] & 15;
chars[0] = hexTable[d];
chars[1] = hexTable[m];
sbappend(chars);
}
return sbtoString();
}
以下命令来生成密钥对。
$openssl genrsa -out mykeypem 2048
$openssl pkcs8 -topk8 -inform PEM -outform PEM -in mykeypem \
-out private_keypem -nocrypt
这个命令得到的公共密钥。
$ openssl rsa -in mykeypem -pubout -outform DER -out public_keyder
我写了两方法读取私钥和公钥
分别。public PrivateKey getPemPrivateKey(String filename, String algorithm) throws Exception {
File f = new File(filename);
FileInputStream fis = new FileInputStream(f);
DataInputStream dis = new DataInputStream(fis);
byte[] keyBytes = new byte[(int) flength()];
disreadFully(keyBytes);
disclose();
String temp = new String(keyBytes);
String privKeyPEM = tempreplace("-----BEGIN PRIVATE KEY-----\n", "");
privKeyPEM = privKeyPEMreplace("-----END PRIVATE KEY-----", "");
//Systemoutprintln("Private key\n"+privKeyPEM);
Base64 b64 = new Base64();
byte [] decoded = b64decode(privKeyPEM);
PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(decoded);
KeyFactory kf = KeyFactorygetInstance(algorithm);
return kfgeneratePrivate(spec);
}
public PublicKey getPemPublicKey(String filename, String algorithm) throws Exception {
File f = new File(filename);
FileInputStream fis = new FileInputStream(f);
DataInputStream dis = new DataInputStream(fis);
byte[] keyBytes = new byte[(int) flength()];
disreadFully(keyBytes);
disclose();
String temp = new String(keyBytes);
String publicKeyPEM = tempreplace("-----BEGIN PUBLIC KEY-----\n", "");
publicKeyPEM = privKeyPEMreplace("-----END PUBLIC KEY-----", "");
Base64 b64 = new Base64();
byte [] decoded = b64decode(publicKeyPEM);
X509EncodedKeySpec spec =
new X509EncodedKeySpec(decoded);
KeyFactory kf = KeyFactorygetInstance(algorithm);
return kfgeneratePublic(spec);
}
怎么能读取cer证书中的公钥进行AES加密
非对称算法中,公钥用来加密,私钥解密,cer的文件可能是公钥,也有可能是交叉根或root根文件,一般不同的中间件要求的证书规格都不一样,而且现在的CA机构(如沃通)在发证书的时候,都会根据不同的中间件去打包证书文件,并且提供相对的部署指南
cer证书由p12导出(只不过cer是二进制,p12是base64,可以网上查der(二进制)转pem(base64)),导出命令:
keytool -export -alias p12client -keystore dltp12 -storetype PKCS12 -storepass 密码 -rfc -file p12cer
X509Certificate2 cert = new X509Certificate2(证书文件路径,访问权限)
certGetPublicKey();//然后将字节编码转字符串
以上就是关于Java通过RSA算法获取公私钥对 将公钥提供出去 如何获取字符串的公钥全部的内容,包括:Java通过RSA算法获取公私钥对 将公钥提供出去 如何获取字符串的公钥、如何阅读.PEM文件得到私钥和公钥、iOS怎么从cer文件获取公钥等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)