Java通过RSA算法获取公私钥对 将公钥提供出去 如何获取字符串的公钥

Java通过RSA算法获取公私钥对 将公钥提供出去 如何获取字符串的公钥,第1张

直接将公匙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文件获取公钥等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9313466.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存