如何使用String生成RSAPublicKey或RSAPrivateKey

问题描述

已知公钥或私钥是一串字符串,例如:CC7AB38AA3C8873AD61CF5E818FA980D305A448554342CD9E1F77DB8609DB9396B916D7FCB0BE75E561168D1ECA2E2B6AD14285F1CEB8ED7A8FDEE7CA37DF324D792F14D3D3C588B8A6569A8B62AE62E6D44F51461738810F2...如何生成RSAPublicKey或RSAPrivateKey.

解决方案

解决方案二:
根据一定的算法进行转换
解决方案三:
怎么转换呢?
解决方案四:
比如,通过以下方法,生成的RSA公匙和私匙文件,则可以直接调用,而用题目所示的字符串,则不行/***//***生成2048位的RSA公匙和私匙*/publicstaticvoidgenerator(StringprivateKeyFileName)throwsException{KeyPairGeneratorkpg=KeyPairGenerator.getInstance("RSA");kpg.initialize(1024);KeyPairkp=kpg.generateKeyPair();PublicKeypuk=kp.getPublic();PrivateKeyprk=kp.getPrivate();FileOutputStreamfos1=newFileOutputStream("mypub.key");FileOutputStreamfos2=newFileOutputStream("mypri.key");ObjectOutputStreamoos1=newObjectOutputStream(fos1);ObjectOutputStreamoos2=newObjectOutputStream(fos2);oos1.writeObject(puk);oos2.writeObject(prk);oos1.close();oos2.close();fos1.close();fos2.close();System.out.println("公匙生成成功!公匙文件为mypub.key");System.out.println("私匙生成成功!私匙文件为mypri.key");/***//***解密方法**@paramString*私匙文件*@paramString*加密后的字符串*@returnString解密后的字符串*/publicStringRSA2S(StringfileName,StringrsaStr)throwsException{//获取私匙RSAPrivateKeyrsaprk=RSAKey.getPrivateKey(fileName);//获取私匙参数d,nBigIntegerd=rsaprk.getPrivateExponent();BigIntegern=rsaprk.getModulus();//获取密文BigIntegerc=newBigInteger(rsaStr);//解密计算BigIntegerm=c.modPow(d,n);//转换成Stringbyte[]ctext=m.toByteArray();returnnewString(ctext);}}

解决方案五:
自己顶....
解决方案六:
只能帮顶了!
解决方案七:
忘了Java还有串行化了,不过要是别人把3L的文件直接读取了,不就容易泄漏私钥了吗?
解决方案八:
忘了Java还有串行化了,不过要是别人把3L的文件直接读取了,不就容易泄漏私钥了吗?
解决方案九:
引用5楼czp0608的回复:

只能帮顶了!

不清楚,只能继续帮顶了!
解决方案十:
引用5楼czp0608的回复:

只能帮顶了!

不会,只能继续帮顶了。

时间: 2024-09-20 09:12:20

如何使用String生成RSAPublicKey或RSAPrivateKey的相关文章

一段VB.NET代码,生成邮件,发送邮件,支持SMTP验证用户名密码.

smtp|发送邮件 可以生成邮件,可以发送邮件,稍做修改就可以写成一个com组件,在ASP里调用.以后我会整理成一个完整的. -------------------------------------------------------------------------------- '-------------------------------------------------'生成基本邮件格式(包括附件),发送邮件到SMTP服务器,'只能发送到发件人SMTP服务器(需验证),直接投递功

asp.net文件上传功能(单文件,多文件,自定义生成缩略图,水印)_实用技巧

前言 上传功能,是大家经常用到了,可能每一个项目都可以会用到.网上到处都有上传功能的代码.比我写的好的有很多.我这里也仅是分享我的代码. 功能实现点 1.单个文件上传: 2.多个文件上传: 3.对于图片等类型的图像,可以自定义生成缩略图大小: 4.文件服务器扩展. 模式 主要使用的是"模板方法"的设计模式. 本文章的功能优缺点 1.可以自定义生成缩略图的大小,任意定义.对于像微生活运动户外商城(http://sports.8t8x.com/) .淘宝网等的网站,他们需要上传大量的商品图

VB.NET生成随机串或随机数字的方法总结_实用技巧

本文一共介绍了5种生成随机数方式,具体如下: 第一种:转载的方法 Public Enum stringtype allstring = 1 '大小写字母 allnumic = 2 '数字 str_num = 3 '大小写字母+数字 str_upper = 4 '大写字母 str_lower = 5 '大写字母 End Enum Function GenerateRandom(ByVal Length As Integer, ByVal s As stringtype) As String Dim

asp.net下DataSet.WriteXml(String)与(Stream)的区别_实用技巧

DataSet.WriteXml(String)生成的Xml文件中包含XML 声明, 而DataSet.WriteXml(Stream)却不会写入Xml声明即<?xml version="1.0" standalone="yes"?> 详细情况: 在写博客园的数据备份程序时,本来想通过ds.WriteXml(Response.OutputStream)直接将Xml数据发送到客户端,可是这样在客户端得到的Xml文件中的所有中文全是乱码,乱码的Xml文件与正

RSA算法使用介绍

原文地址: http://www.devdiv.com/rsa_-blog-20-11254.html RSA是目前最有影响力的公钥加密算法,该算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥,而两个大素数组合成私钥.公钥是可发布的供任何人使用,私钥则为自己所有,供解密之用.         解密者拥有私钥,并且将由私钥计算生成的公钥发布给加密者.加密都使用公钥进行加密,并将密文发送到解密者,解密者用私钥解

加密-c++ openssl库解密问题

问题描述 c++ openssl库解密问题 服务器给出的是加密后的信息.公模.指数,现在需要解密. 加密后的信息:6F07A0FF53393F619558DBD2E3EE16BC74F009D4661DB49D25A02E900EDAE56A02C142B07408E06C11E66025A42F9875ACF5FA6E5753FA5E3BF322E7284DBF1ADDB1E8F04C6FB3FBF32EA87838A6907E2A0A329B7AA1F3FC238B3B62B73C7C1AF

非对称加密算法-RSA算法

一.概述  1.RSA是基于大数因子分解难题.目前各种主流计算机语言都支持RSA算法的实现  2.java6支持RSA算法  3.RSA算法可以用于数据加密和数字签名  4.RSA算法相对于DES/AES等对称加密算法,他的速度要慢的多  5.总原则:公钥加密,私钥解密  /   私钥加密,公钥解密   二.模型分析 RSA算法构建密钥对简单的很,这里我们还是以甲乙双方发送数据为模型 1.甲方在本地构建密钥对(公钥+私钥),并将公钥公布给乙方 2.甲方将数据用私钥进行加密,发送给乙方 3.乙方用

数字签名算法RSA

一.概述 1.数字签名算法可以看做是一个带有密钥的消息摘要算法,并且这个密钥包括了公钥和私钥.他是非对称加密算法和消息摘要算法的结合体 2.数字签名算法是公钥基础设施(PKI),以及许多网络安全机制的基础 3.数字签名算法有抗否认的作用 4.遵循"私钥签名,公钥验证"规则 5.常见的数字签名算法有RSA/DSA/ECDSA 6.java6支持实现了DSA算法.部分RSA算法需要bouncycastle支持,最牛的ECDSA算法(微软用来做操作系统序列号的那个)完全需要Bouncycas

rsa-RSA加密报错,哪位遇到过类似问题~跪求指点

问题描述 RSA加密报错,哪位遇到过类似问题~跪求指点 import java.security.Key; import java.util.HashMap; import java.util.Map; import javax.crypto.Cipher; import sun.misc.BASE64Decoder; public String decrypt(){ Map keyMap= new HashMap(4); String decryptModeCode = null; Ciphe