Отправка открытого ключа через SMS - PullRequest
1 голос
/ 08 декабря 2011

В настоящее время я пытаюсь разработать приложение для шифрования для Android с использованием ECDH и BouncyCastle.Пока что я реализовал генерацию открытого и закрытого ключей в приложении, как показано ниже.

Моя следующая задача - отправить открытые ключи по SMS.Я хотел бы узнать, какие методы могут быть использованы для выполнения работы.В настоящее время я испытываю это, назначая сгенерированные ключи строке, а затем отправляю строку, но я все еще не могу заставить ее работать должным образом.*

Спасибо и счастливых праздников!

    try
    {
        KeyPairGenerator    g = KeyPairGenerator.getInstance("ECDH", "SC");

        //Define the Elliptic Curve Field, Points A and B
        EllipticCurve curve = new EllipticCurve(new ECFieldFp(Presets.CurveQ),Presets.PointA,Presets.PointB);

        //Define the points on the Elliptic Curve
        ECParameterSpec ecSpec = new ECParameterSpec(
                curve,
                ECPointUtil.decodePoint(curve, Hex.decode("020ffa963cdca8816ccc33b8642bedf905c3d358573d3f27fbbd3b3cb9aaaf")), // G
                new BigInteger("883423532389192164791648750360308884807550341691627752275345424702807307"), // n
                1); // h

        //Generate the random point on the Elliptic Curve
        g.initialize(ecSpec, new SecureRandom());

        //Generate Private Key for User A
        KeyPair aKeyPair = g.generateKeyPair();
        aKeyAgree = KeyAgreement.getInstance("ECDH", "SC");
        aKeyAgree.init(aKeyPair.getPrivate());

        //Save Personal Keys            
        Presets.myPrivateKey = aKeyPair.getPrivate().getEncoded().toString();
        Presets.myPublicKey = aKeyPair.getPublic().getEncoded().toString();

1 Ответ

1 голос
/ 14 декабря 2011

Мне удалось выяснить, что я делал неправильно.

Вывод, который я получал от

Presets.myPublicKey = aKeyPair.getPublic().getEncoded().toString();

было чем-то вроде [@ B1ef9157, которое нельзя было отправить через SMS, как я и надеялся.

Java: синтаксис и значение, стоящее за "[B @ 1ef9157"? Binary / Адрес

Вместо этого я сделал это

byte[] pubEnc = aKeyPair.getPublic().getEncoded();
String s = Base64.encodeBytes(pubEnc);

с использованием кодера Base64 из http://iharder.sourceforge.net/current/java/base64/

и теперь я могу успешно отправить строку через смс.

Спасибо, Крейги!

...