android如何在apk源代码中包含加密公钥,因为设备无法从文件中加载它

时间:2011-09-14 11:04:42

标签: android encryption

在下面的代码我创建公共
和加密的私钥。

我真的想在Android java源代码中嵌入Public Key。

由于它们是Object,我不明白如何在代码中包含公钥 我试图创建一些最终的字符串但是没有用

任何帮助将不胜感激 也许这是一个糟糕的因素,因为我没有多少谈论它

public void GenerateKeyPair()
{       
    try{
        KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
        kpg.initialize(2048);
        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 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();
    }
}

1 个答案:

答案 0 :(得分:1)

回答我自己的问题。

// create the string for client to use
byte[] b = Base64.encodeBase64(keyPair.getPublic().getEncoded());
String encodedString = new String(b);
System.out.println(encodedString);