2014-02-13 26 views
3

所以我搜索了一段時間,並沒有真正找到我需要的東西(因爲每個結果都是關於簽名的實際包)。所以基本上,我所做的是Web服務受到會話管理器的保護,爲了獲得會話編號,需要將GUID發送到WebService。在iOS方面,我們能夠獲得此設置(因爲開發WebService的團隊有iOS開發人員可以提供幫助),但由於該團隊中沒有人或者在這裏沒有太多有關Android的經驗,因此難以嘗試數字瞭解如何做同樣的事情。下面是我迄今爲止所嘗試的,但是生成的GUID由一些奇怪的字符組成,並且不起作用,所以當我繼續尋找其他選項時,我被卡住了。Android標誌數據與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)。只需挖掘該服務即可找到該解決方案。