3

データベースを保護するためにアンドロイドで暗号化されたキーを生成するアルゴリズムはありますか?

私はこのPBEアルゴリズムを試しました:

PBEKeySpec pbeKeySpec = new PBEKeySpec(password.toCharArray(), salt, 
    NUM_OF_ITERATIONS, KEY_SIZE);
SecretKeyFactory factoryKey = SecretKeyFactory.getInstance(PBE_ALGORITHM);
SecretKey tempKey = factoryKey.generateSecret(pbeKeySpec);
SecretKey secretKey = new SecretKeySpec(tempKey.getEncoded(), "AES");

ただし、毎回同じキーを生成します。安全なキーを生成するための他の良いアルゴリズムはありますか?

4

2 に答える 2

2

ランダムな秘密鍵を生成するには、次のようなコードでKeyGeneratorクラスを使用します。

KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(KEY_SIZE);
SecretKey skey = kgen.generateKey();

後でデータベースを復号化する場合は、このキーをどこかに安全に保存する必要があることに注意してください。したがって、質問で提案されている PBE ベースのソリューションを追求する価値があるかもしれません。

于 2013-03-18T16:34:17.867 に答える
1

通常、目的を達成するために、PBEキーを使用してランダムキーを暗号化/復号化します(保存する必要があり、可能な限りデータとは別に保管する必要があります)。これを使用してデータを暗号化/復号化します。次に、暗号化されたキーがなければ、データ暗号文自体はパスワードと直接関係がありません。

于 2013-03-26T14:18:31.433 に答える