问题描述
已知公钥或私钥是一串字符串,例如: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的回复:
只能帮顶了!
不会,只能继续帮顶了。