2012-04-06 21 views
2

私はandroid-appにormliteを使用しています。しかし、今私は問題があります。私は、属性パスワードを持つクラスユーザーを持っています。私はそれを暗号化/復号化したい。しかし、私はormliteで動作する解決策を見つけられませんでした。誰にもアイデアはありますか?私はすでに暗号化がormliteによってサポートされていないことを発見しましたが、他の解決策を探しています。これはormliteで動作します。ormliteでAndroidの暗号化/復号化が可能ですか?

DaoでデンCRUD操作を上書きすることはできますか?さてあなたは(DBに格納される平文パスワードフィールドを指定するだけで暗号化されたパスワードを保存しないでしょう助け

答えて

4

ため

おかげで(私はその愚かな質問であればアンドロイドに新しい、ごめんなさい)、またはパスワードのハッシュだけがさらに優れています(Best way to store password in databaseを参照)。

だから、臆面もなくHow to SHA1 hash a string in Android?からコピー

class User { 
    @DatabaseField(canBeNull = false) 
    private String passwordHash; 

    public void setPassword(String password) { 
     this.passwordHash = hashPassword(password); 
    } 

    public boolean isPasswordCorrect(String givenPassword) { 
     return TextUtils.equals(hasPassword(givenPassword), passwordHash); 
    } 

    private String hashPassword(String password) { 
     return AeSimpleSHA1.SHA1(password); 
    } 
} 

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); 
    } 
} 

SHA1のもののようなものを持っているでしょう。

+0

ありがとう、私はそれを試してみます。 – Flow

+0

ありがとう、完璧に働いた – Flow

+0

完璧なソリューションをありがとう。 – JRomero

関連する問題