2013-04-25 3 views
0

Как шифровать/расшифровывать общедоступные/частные.encrypt/decrypt public/private android

Я предполагаю, что это означает, что ключ является динамическим и никогда не является одним и тем же для строки.

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

Я хотел бы, чтобы обеспечить пароль в примере HTTP:

http://www.example.com/username="ENCRYPTED1"+Password="ENCRYPTED2" 

Зашифрованные 1 и 2 является динамическим и никогда же.

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

Я надеюсь, что это правильный путь.

Я заглянул в замок Spongy, и я не понимал, как реализовать то же самое.

Просьба помочь мне и вести меня.

Спасибо заранее.

Код:

public class CustomizedListView extends Activity { 
    // All static variables 
    static final String URL = "http://example.com/getmsgs/userno=123"; 
    // XML node keys 
    static final String KEY_SONG = "song"; // parent node 
    static final String KEY_ID = "id"; 
    static final String KEY_TITLE = "title"; 
    static final String KEY_ARTIST = "artist"; 
    static final String KEY_DURATION = "duration"; 
    static final String KEY_THUMB_URL = "thumb_url"; 

    ListView list; 
    LazyAdapter adapter; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 


     ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>(); 

     JSONObject json = JSONfunctions.getJSONfromURL(URL); 


     try { 
      JSONObject arr2 = json.getJSONObject("feed"); 
      JSONArray arr = arr2.getJSONArray("entry"); 

      for (int i = 0; i < arr.length(); i++) { 
       JSONObject e1 = arr.getJSONObject(i); 

       JSONArray arr3 = e1.getJSONArray("im:image"); 

       JSONObject arr8 = e1.getJSONObject("im:name"); 

       JSONObject arr10 = e1.getJSONObject("im:artist"); 

        JSONObject e12 = arr3.getJSONObject(0); 

      // creating new HashMap 
      HashMap<String, String> map = new HashMap<String, String>(); 

      map.put(KEY_THUMB_URL, e12.getString("label")); 

      map.put(KEY_ARTIST, arr8.getString("label")); 
      map.put(KEY_TITLE, arr10.getString("label")); 
      // adding HashList to ArrayList 
      songsList.add(map); 
      } 

     } catch (JSONException e) { 
      // Log.e("log_tag", "Error parsing data "+e.toString()); 
      Toast.makeText(getBaseContext(), 
        "Network communication error!", 5).show(); 
     } 


     list=(ListView)findViewById(R.id.list); 

     // Getting adapter by passing xml data ArrayList 
     adapter=new LazyAdapter(this, songsList);   
     list.setAdapter(adapter); 

     // Click event for single list row 
     list.setOnItemClickListener(new OnItemClickListener() { 

      @SuppressWarnings("unchecked") 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 


       HashMap<String, String> o = (HashMap<String, String>) list.getItemAtPosition(position); 
       Toast.makeText(CustomizedListView.this, "ID '" + o.get("KEY_TITLE") + "' was clicked.", Toast.LENGTH_SHORT).show(); 

      } 
     });  
    } 
} 

PHP код:

<?php 

$strno=$_GET['strno']; 

if (isset($strno)) 
{ 
     $connect=mysql_connect("localhost","test","test") or die ('Connection error!!!'); 
     mysql_select_db("test") or die ('Database error!!!'); 

    $query=mysql_query("select sno FROM users where strno='$strno';"); 
    while($row = mysql_fetch_assoc($query)) 

    { 
     $jsonoutput='{"json":{ 
      "msg_sub":"'.$row['msg_sub'].'", 
      }}'; 
    } 

} 

echo trim($jsonoutput); 
mysql_close($connect) or die ('Unable to close connection-error!!!'); 
} 

?> 

JSONfunctions.java

public class JSONfunctions { 

    public static JSONObject getJSONfromURL(String url){ 
     InputStream is = null; 
     String result = ""; 
     JSONObject jArray = null; 

     //http post 
     try{ 
       HttpClient httpclient = new DefaultHttpClient(); 
       HttpPost httppost = new HttpPost(url); 
       HttpResponse response = httpclient.execute(httppost); 
       HttpEntity entity = response.getEntity(); 
       is = entity.getContent(); 

     }catch(Exception e){ 
       Log.e("log_tag", "Error in http connection "+e.toString()); 
     } 

     //convert response to string 
     try{ 
      BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); 
      StringBuilder sb = new StringBuilder(); 
      String line = null; 
      while ((line = reader.readLine()) != null) { 
        sb.append(line + "\n"); 
      } 
      is.close(); 
      result=sb.toString(); 
    }catch(Exception e){ 
      Log.w("log_tag", "Error converting result "+e.toString()); 
    } 

    try{ 

     jArray = new JSONObject(result);    
    }catch(JSONException e){ 
      Log.w("log_tag", "Error parsing data "+e.toString()); 
    } 

    return jArray; 
} 

}

ответ

3

Я надеюсь это правильный путь.

Вы находитесь на пути следа.

Вместо того, чтобы создавать собственный протокол, используйте SSL/HTTPS, клиент может отправить свое имя пользователя и пароль, как обычно, через запрос POST (за исключением того, что это делается через HTTPS).

В качестве альтернативы вы можете выполнить «взаимную аутентификацию». Это означает, что и клиент, и сервер аутентифицируются с использованием их открытого ключа (с HTTPS, только сервер аутентифицируется с помощью своего сертификата/открытого ключа).

+0

Благодарим вас за ваш ответ. Я использую jsonFunctions.java для анализа данных, и код выглядит примерно так: ** JsonObject obj = jsonFunction.getjsonfromurl ("http://www.example.com/username=" ENCRYPTED1 "+ пароль =" ENCRYPTED2 "); ** В настоящее время это мой код в android. Я хотел бы иметь динамическое шифрование, а также нет сеанса в моем php (я надеюсь, что все в порядке). Я хотел бы знать, где продолжить или что мне нужно прочитать, чтобы реализовать то, что требуется. В настоящее время Я нахожусь в тупике и не знаю, с чего начать. Любое руководство на правильном пути мне очень поможет. Спасибо снова. –

+0

@JamesPatrick Эй, как вы отметили здесь, что используете 'JSON'.so пытаетесь отправить свои данные в 'JSON object' vai' HTTP POST', чтобы кодировать ваши данные, а также 'POST' скроет ваши параметры, поэтому не беспокойтесь об этом. –

+0

Я добавил код выше, и здесь я хотел бы зашифровать userno т.е.: ** 123 ** –

0

Не изобретайте новые протоколы безопасности. Используйте HTTPS, и вам не нужно зашифровывать пароль самостоятельно. С помощью HTTP любой способ шифрования и обмена ключами, вероятно, будет не очень эффективным, если вы не сделаете что-то в основном так же, как HTTPS. Это будет только Безопасность через неясность (для этого Google).

Редактировать: И не отправляйте пароли как параметры GET, но всегда как данные POST, даже с HTTPS. Даже если параметры GET не могут быть зафиксированы на проводе, если используются https, они могут быть кэшированы браузерами или переходить на серверный журнал незашифрованным, для получения дополнительной информации см. Здесь: http://www.w3schools.com/tags/ref_httpmethods.asp

+0

Итак, в приведенном выше случае статический конечный строковый URL = «https://example.com/getmsgs/userno=123»; это будет работать? а также, если я вставляю то же самое в браузере, это не предполагается, дайте мне пройти? это произойдет? –

+0

Посмотреть мои правки ... – Oliv