怎样生成c生成rsa公钥和私钥PKCS8格式私钥

Thoughts, stories and ideas
致力于前端技术学习研究
Linux系统教程,运维经验分享你的位置: >
> 支付宝集成获取私钥与公钥【原创】
项目需要,需要在客户端集成支付宝接口。就研究了一下:因为使用支付宝接口,就需要到支付宝官网:注册帐号,并申请。下面讲的是申请好之后的操作。登录成功之后,
店家我的商家服务—在页面的下方找到——&签约管理—&找打 移动支付—–&点击下载集成文档—&跳到新的页面,在页面下方—&找到下载开发包,下载移动支付即可。然后解压出来之后一般会得到三个文件夹。
这个时候要打开文件名为:
支付宝钱包支付接口开发包2.0标准版的文件。打开之后有一个Demo 文件。打开Demo文件。里面会有三个文件夹:第一个 第二个 服务端 Demo,第三个 客户端demo. 这个时候,我们需要关心的是
openssl 文件与 客户端Demo 的文件。
在第三个Demo文件中有IOS版与Android 版的Demo.但是你要部署运行的时候,会发现不能运行成功。在项目主文件里面这样一段代码:
public static final String PARTNER = &&;
//商户收款账号
public static final String SELLER = &&;
//商户私钥,pkcs8格式
public static final String RSA_PRIVATE = &&;
//支付宝公钥
public static final String RSA_PUBLIC = &&;
因为这些,都是需要根据商户注册的信息来填写的。所以就算下下载了Demo,也没有用。下面讲的就是如何获取私钥与支付宝公钥。
还记得刚刚我们加压之后的openssl文件嘛?获取私钥与公钥的方法就在里面:
首先打开openssl文件:以下是文件打开顺序: openssl–&bin –& 双击 openssl.exe文件。这个时候会出现一个命令框:(首先要说明的是这个文件是在Windows系统下打开的)要是苹果系统好像不行.接着继续往下说:
打开命令框后:输入第一行命令 ,生成私钥,如下:
genrsa -out rsa_private_key.pem 1024
按回车键,接着输入第二行命令,生成公钥:
rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
按回车键,接着输入第三行命令,将RSA私钥转换成PKCS8格式
pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt
执行完这三行命令后,就生成了两个以:.pem 结尾的文件。这就是我们生成的公钥与私钥.文件位置就在: bin
目录下。当然我们打不开这两个文件。但是我们可以复制一份到桌面,改成Txt文件打开即可。因为我们需要的只是里面的字符串,记住当我们引用这两个长的字符串的时候,需要注意的是:字符串,不能包括,换行,空格,以及其他误加的字符。所以复制的时候一定要小心。
当然私钥就是我们需要的私钥了,如何获得支付宝公钥呢:回到支付宝首先,首先登录,
点击“查看PID|KEY”,在新打开的页面(/order/pidAndKey.htm ),可查看到签约支付宝账号、合作者身份ID(PID.
二:输入支付密码,查询key、支付宝公钥。
三:上传RSA公钥,在“合作伙伴密钥管理”下,点击“RSA加密”后的“添加密钥”,把自己的公钥复制进去。注意不能有空格,换
行之类的。
四:点击确认上传,若是提示上传成功。则就是成功。
这个时候就可查看支付宝公钥了。如图:
至此,将对应的私钥与公钥填到相应位置我们的Demo
就可一运行了。然后集成到项目中即可。就需要自己动手了。遇到问题,百度一下。希望给你带来用处。
本文永久地址:/12276.html本文出自
,转载时请注明出处及相应链接。
与本文相关的文章iOS中使用RSA对数据进行加密解密 - lvjian700的博客 - ITeye技术网站
博客分类:
RSA算法是一种非对称加密算法,常被用于加密数据传输.如果配合上数字摘要算法, 也可以用于文件签名.
本文将讨论如何在iOS中使用RSA传输加密数据.
openssl-1.0.1j, openssl需要使用1.x版本, 推荐使用[homebrew](http://brew.sh/)安装.
RSA基本原理
RSA使用"秘匙对"对数据进行加密解密.在加密解密数据前,需要先生成公钥(public key)和私钥(private key).
公钥(public key): 用于加密数据. 用于公开, 一般存放在数据提供方, 例如iOS客户端.
私钥(private key): 用于解密数据. 必须保密, 私钥泄露会造成安全问题.
iOS中的Security.framework提供了对RSA算法的支持.这种方式需要对密匙对进行处理, 根据public key生成证书, 通过private key生成p12格式的密匙.
除了Secruty.framework, 也可以, 这可以提供更灵活的使用方式.
本文使用Security.framework的方式处理RSA.
使用openssl生成密匙对
Github Gist:
#!/usr/bin/env bash
echo "Generating RSA key pair ..."
echo "1024 RSA key: private_key.pem"
openssl genrsa -out private_key.pem 1024
echo "create certification require file: rsaCertReq.csr"
openssl req -new -key private_key.pem -out rsaCertReq.csr
echo "create certification using x509: rsaCert.crt"
openssl x509 -req -days 3650 -in rsaCertReq.csr -signkey private_key.pem -out rsaCert.crt
echo "create public_key.der For IOS"
openssl x509 -outform der -in rsaCert.crt -out public_key.der
echo "create private_key.p12 For IOS. Please remember your password. The password will be used in iOS."
openssl pkcs12 -export -out private_key.p12 -inkey private_key.pem -in rsaCert.crt
echo "create rsa_public_key.pem For Java"
openssl rsa -in private_key.pem -out rsa_public_key.pem -pubout
echo "create pkcs8_private_key.pem For Java"
openssl pkcs8 -topk8 -in private_key.pem -out pkcs8_private_key.pem -nocrypt
echo "finished."
在创建证书的时候, terminal会提示输入证书信息. 根据wizard输入对应信息就OK.
在创建p12密匙时, 会提示输入密码, 此时的密码必须记住, 之后会用到.
如果上面指令有问题,请参考最新的openssl官方文档, 以官方的为准. 之前在网上搜索指令, 被坑了一圈之后, 还是会到啃官方文档上. 每条指令文档在最后都会有几个sample,参考sample即可.
iOS如何加载使用证书
将下面代码添加到项目中:
代码依赖, 如果使用cocoapods, 可以讲下面依赖添加到Podfile:
pod 'Base64nl', '~& 1.2'
RSAEncryptor *rsa = [[RSAEncryptor alloc] init];
NSLog(@"encryptor using rsa");
NSString *publicKeyPath = [[NSBundle mainBundle] pathForResource:@"public_key" ofType:@"der"];
NSLog(@"public key: %@", publicKeyPath);
[rsa loadPublicKeyFromFile:publicKeyPath];
NSString *securityText = @"hello ~";
NSString *encryptedString = [rsa rsaEncryptString:securityText];
NSLog(@"encrypted data: %@", encryptedString);
__[rsa rsaEncryptString:securityText]__会返回decrypted base64编码的字符串:
console out 写道
encrypted data: I1Mnu33cU7QcgaC9uo2bxV0vyfJSqAwyC3DZ+p8jm0G2EmcClarrR5R2xLDdXqvtKj+UJbES7TT+AgkK1NDoQvOJBY+jkmrpAchmRbV2jvi3cEZYQG955jrdSAu21NzQe8xWtEc3YzP+TACPdP4B3Cyy0u8N2RcSFWyxu0YKPXE=
在iOS下解码需要先加载private key, 之后在对数据解码. 解码的时候先进行Base64 decode, 之后在用private key decrypt加密数据.
NSLog(@"decryptor using rsa");
[rsa loadPrivateKeyFromFile:[[NSBundle mainBundle] pathForResource:@"private_key" ofType:@"p12"] password:@"123456"];
NSString *decryptedString = [rsa rsaDecryptString:encryptedString];
NSLog(@"decrypted data: %@", decryptedString);
之后会输出解密后的数据:
console 写道
decryptor using rsadecrypted data: hello ~
在服务器端解码数据(Java)
在Java中解码需要使用下述指令生成的pkcs8 private key:
gen shell 写道
openssl pkcs8 -topk8 -in private_key.pem -out pkcs8_private_key.pem -nocrypt
具体解码步骤:
加载pkcs8 private key:
读取private key文件
去掉private key头尾的"-----BEGIN PRIVATE KEY-----"和"-----BEGIN PRIVATE KEY-----"
删除private key中的换行
对处理后的数据进行Base64解码
使用解码后的数据生成private key.
对数据进行Base64解码
使用RSA decrypt数据.
这里我将iOS中"hello ~"加密的数据在Java中进行解码:
import javax.crypto.BadPaddingE
import javax.crypto.C
import javax.crypto.IllegalBlockSizeE
import javax.crypto.NoSuchPaddingE
import java.io.IOE
import java.nio.charset.C
import java.nio.file.F
import java.nio.file.P
import java.security.InvalidKeyE
import java.security.KeyF
import java.security.NoSuchAlgorithmE
import java.security.PrivateK
import java.security.spec.InvalidKeySpecE
import java.security.spec.PKCS8EncodedKeyS
import java.util.Base64;
import static java.lang.String.
public class Encryptor {
public static void main(String[] args) throws IOException, NoSuchAlgorithmException, InvalidKeySpecException, NoSuchPaddingException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException {
PrivateKey privateKey = readPrivateKey();
String message = "AFppaFPTbmboMZD55cjCfrVaWUW7+hZkaq16Od+6fP0lwz/yC+Rshb/8cf5BpBlUao2EunchnzeKxzpiPqtCcCITKvk6HcFKZS0sN9wOhlQFYT+I4f/CZITwBVAJaldZ7mkyOiuvM+raXMwrS+7MLKgYXkd5cFPxEsTxpMSa5Nk=";
System.out.println(format("- decrypt rsa encrypted base64 message: %s", message));
// hello ~,
encrypted and encoded with Base64:
byte[] data = encryptedData(message);
String text = decrypt(privateKey, data);
System.out.println(text);
private static String decrypt(PrivateKey privateKey, byte[] data) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedData = cipher.doFinal(data);
return new String(decryptedData);
private static byte[] encryptedData(String base64Text) {
return Base64.getDecoder().decode(base64Text.getBytes(Charset.forName("UTF-8")));
private static PrivateKey readPrivateKey() throws IOException, NoSuchAlgorithmException, InvalidKeySpecException {
byte[] privateKeyData = Files.readAllBytes(
Paths.get("/Users/twer/macspace/ios_workshop/Security/SecurityLogin/tools/pkcs8_private_key.pem"));
byte[] decodedKeyData = Base64.getDecoder()
.decode(new String(privateKeyData)
.replaceAll("-----\\w+ PRIVATE KEY-----", "")
.replace("\n", "")
.getBytes());
return KeyFactory.getInstance("RSA").generatePrivate(new PKCS8EncodedKeySpec(decodedKeyData));
直行成功后控制台会输出"hello ~".
这种加密传输方式会被用在网银类App中.虽然网银会采用全站https方案, 但是在安全登录这块会使用另一个证书对登录信息加密, 这样可以双层确保数据安全.
基于RSA加密解密算法, 还可以将其运用在数字签名场景.以后有空在聊如何使用RSA算法实现对文件的数字签名.
浏览 15713
感觉RSA的用法挺清晰简单的,不知道您在具体使用中有什么问题吗?因为objective-C的RSA好像没有什么比较权威的库。iOS Security.framework 已经有很好的支持.MD5/AES 等加密算法也有基本支持...其他的有openssl.& 不知道你说的权威是只什么?&&& 一般C或者C++库都可以编译到iOS中使用.& Openssl 应该是最权威的.
witcheryne
浏览: 501396 次
来自: 西安
请问您这部分代码是只实现了命令解析的功能吗
在每一个路由请求回调中都要写一段判断文件是否存在,是否有更好的 ...
还有哈,就是您在验签的方法中有个kSecPaddingPKCS ...
我说的“权威”是指比较多人用的哈。哈哈忽略我这个菜鸟 我现在因 ...JAVA使用openssl生成的公私钥做加密解密 | PHPor 的Blog
使用openssl生成密钥对:
&openssl genrsa -out private.key
&openssl rsa -in private.key -pubout -outform PEM -out public.key
// 因为java里面不识别x509格式的私钥,所以必须转换为 pkcs8格式方可使用
// java异常描述为: java.security.spec.InvalidKeySpecException: Only RSAPrivate(Crt)KeySpec and PKCS8EncodedKeySpec supported for RSA private keys
// 虽然RSAPrivate(Crt)KeySpec 也支持,但是目前还不知道怎么用
&openssl pkcs8 -topk8 -inform PEM -outform PEM -in private.key -out pkcs8_priv.pem -nocrypt
&openssl genrsa -out private.key&openssl rsa -in private.key -pubout -outform PEM -out public.key// 因为java里面不识别x509格式的私钥,所以必须转换为 pkcs8格式方可使用// java异常描述为: java.security.spec.InvalidKeySpecException: Only RSAPrivate(Crt)KeySpec and PKCS8EncodedKeySpec supported for RSA private keys// 虽然RSAPrivate(Crt)KeySpec 也支持,但是目前还不知道怎么用&openssl pkcs8 -topk8 -inform PEM -outform PEM -in private.key -out pkcs8_priv.pem -nocrypt
java代码:
1. 注意: java 语言本身没有实现base64编码,而openssl生成的密钥对一般做base64编码,便于维护,所以这里引用了 mons.codec.binary.Base64;
import java.io.BufferedR
import java.io.FileNotFoundE
import java.io.FileR
import java.io.IOE
import java.security.KeyF
import java.security.NoSuchAlgorithmE
import java.security.PrivateK
import java.security.PublicK
import java.security.spec.InvalidKeySpecE
import java.security.spec.PKCS8EncodedKeyS
import java.security.spec.X509EncodedKeyS
import java.util.A
import javax.crypto.C
import mons.codec.binary.Base64;
//下载地址: http://commons.apache.org/codec/download_codec.cgi
public static class MyRsa {
* String to hold name of the encryption algorithm.
public static final String ALGORITHM = "RSA";
* String to hold the name of the private key file.
public static final String PRIVATE_KEY_FILE = "D:/rsa/pkcs8_priv.pem";
* String to hold name of the public key file.
public static final String PUBLIC_KEY_FILE = "D:/rsa/public.key";
* Encrypt the plain text using public key.
* @param text
: original plain text
* @param key
:The public key
* @return Encrypted text
* @throws java.lang.Exception
public static byte[] encrypt(String text, PublicKey key) {
byte[] cipherText =
// get an RSA cipher object and print the provider
final Cipher cipher = Cipher.getInstance(ALGORITHM);
// encrypt the plain text using the public key
cipher.init(Cipher.ENCRYPT_MODE, key);
cipherText = cipher.doFinal(text.getBytes());
} catch (Exception e) {
e.printStackTrace();
return cipherT
* Decrypt text using private key.
* @param text
:encrypted text
* @param key
:The private key
* @return plain text
* @throws java.lang.Exception
public static String decrypt(byte[] text, PrivateKey key) {
byte[] dectyptedText =
// get an RSA cipher object and print the provider
final Cipher cipher = Cipher.getInstance(ALGORITHM);
// decrypt the text using the private key
cipher.init(Cipher.DECRYPT_MODE, key);
dectyptedText = cipher.doFinal(text);
} catch (Exception ex) {
ex.printStackTrace();
return new String(dectyptedText);
public static void test() {
String s = "Hello world";
BufferedReader privateKey = new BufferedReader(new FileReader(
PRIVATE_KEY_FILE));
BufferedReader publicKey = new BufferedReader(new FileReader(
PUBLIC_KEY_FILE));
String strPrivateKey = "";
String strPublicKey = "";
String line = "";
while((line = privateKey.readLine()) != null){
strPrivateKey +=
while((line = publicKey.readLine()) != null){
strPublicKey +=
privateKey.close();
publicKey.close();
// 私钥需要使用pkcs8格式的,公钥使用x509格式的
String strPrivKey = strPrivateKey.replace("-----BEGIN PRIVATE KEY-----", "")
.replace("-----END PRIVATE KEY-----", "");
String strPubKey = strPublicKey.replace("-----BEGIN PUBLIC KEY-----", "")
.replace("-----END PUBLIC KEY-----", "");
//System.out.print(strPrivKey);
//System.out.println(strPubKey);
byte [] privKeyByte = Base64.decodeBase64(strPrivKey);
byte [] pubKeyByte = Base64.decodeBase64(strPubKey);
PKCS8EncodedKeySpec privKeySpec = new PKCS8EncodedKeySpec(privKeyByte);
//PKCS8EncodedKeySpec pubKeySpec = new PKCS8EncodedKeySpec(pubKeyByte);
//X509EncodedKeySpec
privKeySpec = new X509EncodedKeySpec(privKeyByte);
X509EncodedKeySpec
pubKeySpec = new X509EncodedKeySpec(pubKeyByte);
KeyFactory kf = KeyFactory.getInstance("RSA");
PrivateKey privKey = kf.generatePrivate(privKeySpec);
PublicKey pubKey = kf.generatePublic(pubKeySpec);
byte [] encryptByte = encrypt(s, pubKey);
System.out.println(decrypt(encryptByte, privKey));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvalidKeySpecException e) {
// TODO Auto-generated catch block
e.printStackTrace();
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
import java.io.BufferedReader;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.security.KeyFactory;import java.security.NoSuchAlgorithmException;import java.security.PrivateKey;import java.security.PublicKey;import java.security.spec.InvalidKeySpecException;import java.security.spec.PKCS8EncodedKeySpec;import java.security.spec.X509EncodedKeySpec;import java.util.Arrays;&import javax.crypto.Cipher;&import org.apache.commons.codec.binary.Base64;//下载地址: http://commons.apache.org/codec/download_codec.cgi&public static class MyRsa { /**
* String to hold name of the encryption algorithm.
*/ public static final String ALGORITHM = "RSA";& /**
* String to hold the name of the private key file.
*/ public static final String PRIVATE_KEY_FILE = "D:/rsa/pkcs8_priv.pem";& /**
* String to hold name of the public key file.
*/ public static final String PUBLIC_KEY_FILE = "D:/rsa/public.key";& /**
* Encrypt the plain text using public key.
* @param text
*&&&&&&&&&&&&: original plain text
* @param key
*&&&&&&&&&&&&:The public key
* @return Encrypted text
* @throws java.lang.Exception
*/ public static byte[] encrypt(String text, PublicKey key) {
byte[] cipherText = null;
// get an RSA cipher object and print the provider
final Cipher cipher = Cipher.getInstance(ALGORITHM);
// encrypt the plain text using the public key
cipher.init(Cipher.ENCRYPT_MODE, key);
cipherText = cipher.doFinal(text.getBytes());
} catch (Exception e) {
e.printStackTrace();
return cipherText; }& /**
* Decrypt text using private key.
* @param text
*&&&&&&&&&&&&:encrypted text
* @param key
*&&&&&&&&&&&&:The private key
* @return plain text
* @throws java.lang.Exception
*/ public static String decrypt(byte[] text, PrivateKey key) {
byte[] dectyptedText = null;
// get an RSA cipher object and print the provider
final Cipher cipher = Cipher.getInstance(ALGORITHM);&
// decrypt the text using the private key
cipher.init(Cipher.DECRYPT_MODE, key);
dectyptedText = cipher.doFinal(text);&
} catch (Exception ex) {
ex.printStackTrace();
return new String(dectyptedText); }& public static void test() {
String s = "Hello world";
BufferedReader privateKey = new BufferedReader(new FileReader(
PRIVATE_KEY_FILE));
BufferedReader publicKey = new BufferedReader(new FileReader(
PUBLIC_KEY_FILE));
String strPrivateKey = "";
String strPublicKey = "";
String line = "";
while((line = privateKey.readLine()) != null){
strPrivateKey += line;
while((line = publicKey.readLine()) != null){
strPublicKey += line;
privateKey.close();
publicKey.close();&
// 私钥需要使用pkcs8格式的,公钥使用x509格式的
String strPrivKey = strPrivateKey.replace("-----BEGIN PRIVATE KEY-----", "")
.replace("-----END PRIVATE KEY-----", "");
String strPubKey = strPublicKey.replace("-----BEGIN PUBLIC KEY-----", "")
.replace("-----END PUBLIC KEY-----", "");
//System.out.print(strPrivKey);
//System.out.println(strPubKey); &
byte [] privKeyByte = Base64.decodeBase64(strPrivKey);
byte [] pubKeyByte = Base64.decodeBase64(strPubKey);
PKCS8EncodedKeySpec privKeySpec = new PKCS8EncodedKeySpec(privKeyByte);
//PKCS8EncodedKeySpec pubKeySpec = new PKCS8EncodedKeySpec(pubKeyByte);&
//X509EncodedKeySpec
privKeySpec = new X509EncodedKeySpec(privKeyByte);
X509EncodedKeySpec
pubKeySpec = new X509EncodedKeySpec(pubKeyByte);&
KeyFactory kf = KeyFactory.getInstance("RSA");&
PrivateKey privKey = kf.generatePrivate(privKeySpec);
PublicKey pubKey = kf.generatePublic(pubKeySpec);&
byte [] encryptByte = encrypt(s, pubKey);
System.out.println(decrypt(encryptByte, privKey));&
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvalidKeySpecException e) {
// TODO Auto-generated catch block
e.printStackTrace();
稍后提供一个PHP加密Java解密的实现
参考资料:
/questions//how-to-read-pem-file-to-get-private-and-public-key
/questions/8647165/how-to-sign-a-generic-text-with-rsa-key-and-encode-with-base64-in-java
/tutorials/cryptography/rsa_encryption.shtml
/blog/381767
密钥结构及格式: https://polarssl.org/kb/cryptography/asn1-key-structures-in-der-and-pem
二维码页面地址我的微博
js 压缩工具
比较侧重后端
谢晟廷的blog
服务器相关
centos源代码
默认链接组
© 2012RSA使用X509EncodedKeySpec、PKCS8EncodedKeySpec生成公钥和私钥
private static final String KEY_ALGORITHM = "RSA";
private static final String PUBLIC_KEY ="publicKey";
private static final String PRIVATE_KEY ="privateKey";
public static void main(String[] args) throws Exception{
Map&String,String& keyMap = genKey();
RSAPublicKey publicKey = getPublicKey(keyMap.get(PUBLIC_KEY));
RSAPrivateKey privateKey = getPrivateKey(keyMap.get(PRIVATE_KEY));
String info ="明文123456";
byte[] bytes = encrypt(info.getBytes("utf-8"),publicKey);
bytes = decrypt(bytes, privateKey);
System.out.println(new String(bytes,"utf-8"));
public static Map&String,String& genKey() throws NoSuchAlgorithmException{
Map&String,String& keyMap = new HashMap&String,String&();
KeyPairGenerator keygen = KeyPairGenerator.getInstance(KEY_ALGORITHM);
SecureRandom random = new SecureRandom();
// random.setSeed(keyInfo.getBytes());
// 初始加密,512位已被破解,用1024位,最好用2048位
keygen.initialize(1024, random);
// 取得密钥对
KeyPair kp = keygen.generateKeyPair();
RSAPrivateKey privateKey = (RSAPrivateKey)kp.getPrivate();
String privateKeyString = Base64.encode(privateKey.getEncoded());
RSAPublicKey publicKey = (RSAPublicKey)kp.getPublic();
String publicKeyString = Base64.encode(publicKey.getEncoded());
keyMap.put(PUBLIC_KEY, publicKeyString);
keyMap.put(PRIVATE_KEY, privateKeyString);
return keyM
public static RSAPublicKey getPublicKey(String publicKey) throws Exception{
byte[] keyBytes = LBase64.decode(publicKey);
X509EncodedKeySpec spec = new X509EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
return (RSAPublicKey) keyFactory.generatePublic(spec);
public static RSAPrivateKey getPrivateKey(String privateKey) throws Exception{
byte[] keyBytes = LBase64.decode(privateKey);
PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
return (RSAPrivateKey) keyFactory.generatePrivate(spec);
文章评论 以下网友留言只代表其个人观点,不代表本网站的观点和立场。

我要回帖

更多关于 公钥 私钥 生成 的文章

 

随机推荐