2017-07-10 12 views
0

別の文字列に基づいてJavaを使用して文字列を生成する必要があります。しかし、元の文字列を使って生成された文字列が有効であることを確認する必要もあります。私は、各顧客がいくつかのアクションを実行できるようにするための有効なコードを生成できるJavaアプリケーションが必要なので、使用するときに、そのコードがその顧客に有効であることを検証できる必要があります。ランダムな文字列を生成して検証する

発信元の文字列は、固有のフィールドまたは多分IDである可能性があります...また、キーを生成するための同じロジックは、Androidアプリケーションで実行する必要があり、オフラインの場合にキーを取得できるようにする必要がありますJavaアプリケーションでは、そのキーが有効かどうかを確認する必要があります。

+2

を使用することを確認するためにそれはあなたが探しているものを理解するのは難しいが、私はMD5がGOOG十分だと思います仕事のために:https://stackoverflow.com/questions/4846484/md5-hashing-in-android – Vaiden

+1

一時的なトークンをクライアントに提供する場合は、そのトークンをデータベースに格納してアカウントにリンクする必要がありますトークンをどのように格納するかはあなた次第ですが、人間が読めるようにするには、Base64エンコーディングを使用し、暗号化の必要はありません – Wietlol

+0

UUIDとUUIDと顧客IDをどこかに格納します –

答えて

-1

はStringBuilderの によってjava.util.Randomの和charでランダムな単語を生成し、String.contains

String specialWord = "abcde"; 

String wordNew = newWordBySpecialWord();//create word 
Log.i("wordNew ", wordNew); 

Log.i("checking ", String.valueOf(checking(wordNew))); //return true 
Log.i("checking ", String.valueOf(checking(wordNew+"gfrf"))); //return false 



public String newWordBySpecialWord() { 
    char[] chars = specialWord.toCharArray(); 
    StringBuilder sb = new StringBuilder(); 
    Random random = new Random(); 
    for (int i = 0; i < 16; i++) { 
     char c = chars[random.nextInt(chars.length)]; 
     sb.append(c); 
    } 
    return sb.toString(); 
} 

public boolean checking(String word) { 
    for (char aChar : word.toCharArray()) { 
     if (!specialWord.contains(String.valueOf(aChar))) { 
      return false; 
     } 
    } 
    return true; 
} 
+0

あなたは本質的に同じ回答を再度投稿しましたが、それまでの間には改善されませんでした。チェックすると、元の「specialWord」の文字だけを含むすべての単語が渡されます。たとえば、 'wordNew +" acba "は有効です。つまり、元の単語に少なくとも1つの文字がある場合は、有効なトークンを推測するのに26回の試行しか必要ありません。さらに、元の単語が何であるかを判断することはできません。したがって、コードが「その顧客のために有効かどうか」を知る機会はありません。 – Henry

関連する問題