Создать открытый ключ из больших целых чисел? - PullRequest
2 голосов
/ 09 октября 2011

Я хотел бы создать открытый ключ, который создается с использованием C # XML RSAKeys, однако я хотел бы восстановить его с помощью java. Проблема в том, что я получаю сами M & E из ключа в виде значений байтов и для создания ключаМне нужно использовать два BigIntegers. Как мне создать открытый ключ?

Редактировать: Проблема в том, что мод, байтовые массивы exp, которые были декодированы в base64, являются M, N открытого ключа ...

    byte[] mod  = Base64.decodeBase64(modulus.getBytes());
    byte[] exp  = Base64.decodeBase64(exponent.getBytes());

    int[] copyMod = new int[mod.length];

    for (int x = 0; x < mod.length; x++) {
        copyMod[x] = unsignedToBytes((byte) mod[x]);
    }

    int[] copyExp = new int[exp.length];

    for (int x = 0; x < exp.length; x++) {
        copyExp[x] = unsignedToBytes((byte) exp[x]);
    }

    String Mod =  Arrays.toString(copyMod);
    String Exp = Arrays.toString(copyExp);

    BigInteger m = new BigInteger(Mod.getBytes());
    BigInteger e = new BigInteger(Exp.getBytes());

        java.security.spec.RSAPublicKeySpec spec = new java.security.spec.RSAPublicKeySpec(m, e);
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        PublicKey publicKey = keyFactory.generatePublic(spec);

Ответы [ 2 ]

1 голос
/ 09 октября 2011
java.security.spec.RSAPublicKeySpec spec = new java.security.spec.RSAPublicKeySpec(m, e);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicKey = keyFactory.generatePublic(spec);
1 голос
/ 09 октября 2011

Вы не говорите нам, какой тип объекта вы хотите.Но если вам нужен открытый ключ RSA, вы можете сделать (BouncyCastle):

RSAPublicKey rsaPubKey = new JCERSAPublicKey(
    new RSAKeyParameters(false, modulus, exponent));

См. Определение класса .

...