Механизм ECC с BouncyCastle для Java

Что ж,

Мне нужно сделать api с использованием java для шифрования, дешифрования и других вещей о Cryptografy. Я использую для этого фреймворк bouncycastle. Но я не могу найти Elliptic Curve Cryptigrafy Engine в BC Framework, я нашел RSAEngine, IESEngine.

Я хочу зашифровать с помощью открытого ключа и расшифровать с помощью закрытого ключа, но для всех найденных мной исключений требуются оба ключа для шифрования, поэтому я этого не понимаю. Нравится:

Security.addProvider(new BouncyCastleProvider());

    KeyPairGenerator kpg = (KeyPairGenerator) KeyPairGenerator.getInstance("ECIES", "BC");

    kpg.initialize(192, new SecureRandom());

    KeyPair keyPair = kpg.generateKeyPair();
    PublicKey pubKey = keyPair.getPublic();
    PrivateKey privKey = keyPair.getPrivate();

    byte[] d = new byte[]{1, 2, 3, 4, 5, 6, 7, 8}; // 1. can someone tell me what this parameters does?
    byte[] e = new byte[]{8, 7, 6, 5, 4, 3, 2, 1};

    IESParameterSpec param = new IESParameterSpec(d, e, 192); // 2. and this parameters?
    IEKeySpec c1Key = new IEKeySpec(privKey, pubKey);
    System.out.println(c1Key.getPublic());

    Cipher cipher = Cipher.getInstance("ECIES", "BC");
    cipher.init(Cipher.ENCRYPT_MODE, c1Key, param);
    System.out.println(cipher.doFinal("test12345678900987654321".getBytes()));

Но в некоторых случаях у меня нет закрытого ключа, как зашифровать с открытым ключом.

Кто-нибудь Помогите мне?


person Dimmy Magalhães    schedule 20.01.2014    source источник


Ответы (1)


Умм, насколько я знаю, ECC нужен другой ключ для шифрования и дешифрования. Вот почему это называется ассиметричным шифрованием.
Предположим, Алиса хочет отправить сообщение M (x, y) Бобу
1. Функция кривой y^2 = x^3 + ax + b mod p с опорной точкой G(x,y)
2. Алиса выбирает закрытый ключ nA и вычисляет свой открытый ключ Qa = nA.G
3. Боб выбирает закрытый ключ nB и вычисляет его открытый ключ Qb = nB.G
4. Алиса шифрует сообщение D = M + na.Qb (D = зашифрованный текст) и отправляет (Qa, D) Бобу
5. Чтобы расшифровать сообщение, Боб вычисляет M = D + (-nb).Qa и восстанавливает M

Надеюсь это поможет.

person RedCrimson    schedule 19.04.2014