2014-02-13 3 views
3

Итак, я искал вокруг какое-то время и не мог найти то, что мне нужно (так как каждый результат, который возникает, касается подписания фактического пакета). Таким образом, в основном то, что я делаю, заключается в том, что WebServices защищены с помощью диспетчера сеансов, и для того, чтобы получить номер сеанса, GUID необходимо отправить в WebService. На стороне iOS мы смогли получить эту настройку (поскольку команда, которая занималась разработкой WebService, имела там iOS-разработчика), но поскольку никто из этой команды или у нее не имеет большого опыта работы с Android, изо всех сил пытались понять как сделать то же самое. Ниже я попытался до сих пор, но созданный GUID состоит из некоторых странных символов и не работает, поэтому я застрял, пока я продолжаю искать другие варианты.Android Sign Data с сертификатом P12

 String password = "password"; 
     String text = "545048"; 
     KeyStore keyStore = KeyStore.getInstance("pkcs12"); 
     InputStream inputStream = activity.getResources().openRawResource(R.raw.am_client); 
     keyStore.load(inputStream, password.toCharArray()); 

     String alias = keyStore.aliases().nextElement(); 
     PrivateKey privateKey = (PrivateKey)keyStore.getKey(alias, password.toCharArray()); 
     X509Certificate certificate = (X509Certificate)keyStore.getCertificate(alias); 

     //Sign Data 
     byte[] dataToSign = text.getBytes("UTF-8"); 
     Signature signature1 = Signature.getInstance("SHA1WithRSA"); 
     signature1.initSign(privateKey); 
     signature1.update(dataToSign); 
     byte[] signedData = signature1.sign(); 
     String signed = new String(signedData, "UTF-8"); 
     Log.d("MESSAGE", "string = " + signed); 
     //This is what comes up in the Log: ��m(N� �xp�r���K�V>G3b���M��W08���6#�͞�+�/�]�,�o���N"�$��uVa�ƾ�~�� 

ответ

2

я понял, проблема, код был нормально, но когда я был преобразования текста в массив байтов Я использовал неправильный формат (UTF-8), так как служба использует (UTF-16LE). Просто приходилось копаться в службе, чтобы найти это решение.

Смежные вопросы