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

博客分类:
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);
浏览 17743
caniggia1986
浏览: 84209 次
来自: 上海
其实这种解决方案就是我们所说的&数字信封& ...
MethodDispatcher md = (MethodDi ...
谢谢,用上了。如何生成RSA密钥
如何生成RSA密钥通过openssl工具生成RSA的公钥和私钥(opnssl工具可在互联网中下载到,也可以点此下载无线接口包,里面包含此工具)打开openssl文件夹下的in文件夹,执行openssl.exe文件:1)生成RSA私钥输入“生成命令.txt”文件中:“gensa-outsa_pivate_key.pem1024”,并回车得到生成成功的结果,如下图:此时,我们可以在in文件夹中看到一个文件名为sa_pivate_key.pem的文件,用记事本方式打开它,可以看到-----BEGINRSAPRIVATEKEY-----开头,-----ENDRSAPRIVATEKEY-----结尾的没有换行的字符串,这个就是原始的私钥。2)把RSA私钥转换成PKCS8格式输入命令:pkcs8-topk8-infomPEM-insa_pivate_key.pem-outfomPEM-nocypt,并回车当前界面中会直接显示出生成结果,这个结果就是PKCS8格式的私钥,如下图:
& 果果文库所有资源均来源于互联网,仅供网友学习交流,若侵犯了您的权益,请联系我们予以删除。
5986&&人浏览
12804&&人浏览
3488&&人浏览
4502&&人浏览
7452&&人浏览
12757&&人浏览
2169&&人浏览
11635&&人浏览
4999&&人浏览
11313&&人浏览
2852&&人浏览
4700&&人浏览
19761&&人浏览
1975&&人浏览
19359&&人浏览
本文标题:如何生成RSA密钥 链接地址:
2013- Inc. All Rights Reserved 果果文库 版权所有 联系站长: ; 经营许可证编号:浙ICP备号问题:openssl 生成私钥,转成pkcs8问题
用openssl生成公钥私钥,大家都知道命令。
但是私钥的生成需要转换成pkcs8格式,而我看到支付宝的文档上有个注意事项:java用户需要将私钥转换成pkcs8格式,而对于.net和php则不需要。我在php5.5.29测试过,确实对于php,私钥转不转pkcs8都可以加解密。
为什么呢?我知道pkcs8是私钥的语法标准。
以上介绍了“openssl 生成私钥,转成pkcs8问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:/itwd/1053476.html
上一篇: 下一篇:温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
1、生成私钥pem, &执行命令openssl genrsa -out rsa_private_key.pem 10242、生成公钥,执行命令openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem3、将RSA私钥转换成PKCS8格式,命令执行openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt PHP服务端语言读取私钥不需要PKCS8转换。
阅读(10610)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'pkcs8 密钥生成 用于RSA非对称加密',
blogAbstract:'PKCS #8 使用&ASN.1&的&DER',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:6,
publishTime:2,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}

我要回帖

更多关于 公钥和私钥格式 的文章

 

随机推荐