2012-02-22 22 views
2

私のアプリでは、電子メールでバグレポートを送信します。ここで私のパスワードをハードコードするのは安全ではないと聞いたので、どのように保護しますか?パスワード(Android)をハードコードしない方法は?

my/res/valuesに書き込んでそこから読み取るだけで十分ですか?

この理由は、私は内部電子メールアプリを使用しないということです。ユーザーが私のアプリを終了すると、彼は戻って来ないかもしれないので、あまり良くないです。

GMailSender sender = new GMailSender("[email protected]", "my_password"); 
sender.sendMail("Bugreport", 
       currentQuestion.getID(), 
       "[email protected]", 
       "[email protected]"); 

私を助けてください。 おかげ

+0

ハードコーディングの代わりにuは1つのuiコンポーネントを作成できます。これは、メッセージを送信する際に電子メールとパスワードを要求するため、uまたはユーザーがそこにユーザー名とパスワードを入力して送信できます。 – Triode

答えて

0

あなたはあなたのパスワードを暗号化するためにSHA暗号化を使用することができます。

以下

はSHA暗号化を使用するコードです:

import java.io.UnsupportedEncodingException; 
import java.security.MessageDigest; 
import java.security.NoSuchAlgorithmException; 

public class AeSimpleSHA1 { 

    private static String convertToHex(byte[] data) { 
     StringBuffer buf = new StringBuffer(); 
     for (int i = 0; i < data.length; i++) { 
      int halfbyte = (data[i] >>> 4) & 0x0F; 
      int two_halfs = 0; 
      do { 
       if ((0 <= halfbyte) && (halfbyte <= 9)) 
        buf.append((char) ('0' + halfbyte)); 
       else 
        buf.append((char) ('a' + (halfbyte - 10))); 
       halfbyte = data[i] & 0x0F; 
      } while(two_halfs++ < 1); 
     } 
     return buf.toString(); 
    } 

    public static String SHA1(String text) 
      throws NoSuchAlgorithmException, UnsupportedEncodingException { 
     MessageDigest md; 
     md = MessageDigest.getInstance("SHA-1"); 
     byte[] sha1hash = new byte[40]; 
     md.update(text.getBytes("iso-8859-1"), 0, text.length()); 
     sha1hash = md.digest(); 
     return convertToHex(sha1hash); 
    } 
} 
+0

実行時にパスワードを入力せずに自分のアプリケーション内にパスワードを保存したいので、暗号化は使用できません。 – caiuspb

+0

- 多分方法がありますが、私はどのようにそれを行う手がかりがありません。実行時に暗号化する場合は、アプリケーション内にPWを格納する必要があります。 – caiuspb

+4

SHAは暗号化アルゴリズムではなく、ハッシュ関数のファミリです。ハッシュをハードコードすることは、psw自体をハードコーディングすることと同じくらい悪いことです。デコンパイラから保護されていません。 –

3

あなたが入れた場合、パスワードを保護するために何も本当に安全な方法は、ありませんそれはあなたのアプリでは全くありません。一番少ないことは、分離口座を作ることなので、あなたの実際の口座と連動していません。

それ以外は、このアプローチをまったく使用しないことをお勧めします。メールアプリケーションでビルドを使用することはそれほど悪くありません。この方法で、ユーザーはあなたのアプリをより良くするために何かを寄与していることが分かります。これは良いことです。

バグが発生したときにバグを送信し、アプリでHTTPリクエストを送信するためのWebページを作成する可能性があります。しかし、そうでなければ、あなたが彼を覗いていると思うかもしれないので、ユーザーにそれについて知らせてください。

そして、アンドロイドのクラッシュレポート機能が組み込まれているので、何もする必要はありません。

+0

ありがとう。バックグラウンドで警告ダイアログを送信せず、ユーザはバグ報告が私に送られたことを確認する必要があります。そういうわけではない。 はい、私は2番目のメールでこれを行うことができます。これは非常に簡単な解決策です。 私のアプリが普及したら、私は物事を変えてHTTPリクエストで送るかもしれません。 – androiddevjedi

関連する問題