RSA加密在生成公钥/私钥之前强制关闭

我正在尝试为RSA加密生成我的第一个公钥/私钥对。 这是我第一次这样做,但通过查看各种教程和网站,我决定使用以下代码。 虽然我的代码没有给我错误,但它强制关闭。 一切都贴出来,包括我的import,可以sombody请帮助我理解为什么我的代码没有生成密钥并给我错误? 是的,我确实在AndroidManifest.xml文件中声明了它

import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.ObjectOutputStream; import java.math.BigInteger; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.spec.RSAPrivateKeySpec; import java.security.spec.RSAPublicKeySpec; public class RSA { public static void GenerateKeyPair() { try { KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); kpg.initialize(4096); KeyPair kp = kpg.genKeyPair(); KeyFactory fact = KeyFactory.getInstance("RSA"); RSAPublicKeySpec pub = fact.getKeySpec(kp.getPublic(), RSAPublicKeySpec.class); RSAPrivateKeySpec priv = fact.getKeySpec(kp.getPrivate(), RSAPrivateKeySpec.class); saveToFile("public.key", pub.getModulus(), pub.getPublicExponent()); saveToFile("private.key", priv.getModulus(), priv.getPrivateExponent()); } catch (Exception e) { System.out.println(e.getMessage()); } } public static void saveToFile(String fileName, BigInteger mod, BigInteger exp) throws Exception { ObjectOutputStream oout = new ObjectOutputStream( new BufferedOutputStream(new FileOutputStream(fileName))); try { oout.writeObject(mod); oout.writeObject(exp); } catch (Exception e) { throw new Exception("error", e); } finally { oout.close(); } } }                 

我不知道是什么导致了你的问题(我们必须看看你在哪里使用这个类进行调试),但如果你可以包含第三方库,我确实有你的选择。 请参阅JSch ,它可以生成RSA密钥对(例如,用于SSH公钥validation)。 文档: http : //epaul.github.com/jsch-documentation/simple.javadoc/

您正在寻找的方法是KeyPair.genKeyPair 。

@The Obliviator当我看到你AndroidManifest时,我发现你应该从你的清单中删除下面的代码。

    

因为这个类没有扩展为As Activity,所以你需要这个类用于GenerateKeyPair所以不需要在Manifest文件中声明这个类。那么这个类安装怎么样,这个类也没有扩展为Activity然后也删除它。之后你将成功运行。