2012-01-22 4 views
0

私は現在、ユーザーデータ(名前、住所、電話番号)を取得するプログラムを作成中です。私はそれを保存するときにデータを読むことができないようにしたい。リリースされたプログラムではないので、私はあまりにも複雑な暗号を使いたくはなく、単純で素早くスクランブル/スクランブルアルゴリズムを使用します。java string scramble

+2

アルゴリズムがどれほど複雑であるかは重要です。自分でそれを実装する計画はありませんか? Javaには、最初にコンサルティングに慣れるべき非常に豊富なライブラリエコシステムがあります。人気のある図書館のほとんどは許可されたライセンスで無料です。 –

答えて

0

クラスを定義して(たとえば、Fooとしましょう)、そのクラスのインスタンスを作成してデータを保持できるものをリストに入れます。その後、リストオブジェクトをバイナリファイルとして保存します。このような何か:

public static void saveObject(List<Foo> obj, String filePath) 
{ 
    OutputStream os = null; 
    try 
    { 
     os = new ObjectOutputStream(new FileOutputStream(filePath)); 
     os.writeObject(obj); 
    } 
    catch(Exception ex){} 
    finally 
    { 
     os.close(); 
    } 
} 

次にあなたが好きそれを読み込むことができます:あなたは、このオブジェクトのシリアル化を使用するSerializableインタフェースを実装する必要が

public static List<Foo> loadObject(String filePath) 
{ 
    List<Foo> obj = null; 
    InputStream is = null; 
    try 
    { 
     is = new ObjectInputStream(new FileInputStream(filePath)); 
     obj = (List<Foo>) is.readObject(); 
    } 
    catch(Exception ex){} 
    finally 
    { 
     is.close(); 
    } 
    return obj; 
} 

注意。

+0

それでも、ファイルはかなり読みやすくなります。オブジェクトのシリアライズ時に実行されるオブジェクトデータのスクランブルはありません。心配しなくても、ObjectOutputStreamとFileOutputStreamの間にAES Cipherを持つCipherOutputStreamを置くことができます。簡単な難読化のためには、静的キーとECBエンコーディング(およびPKCS5Padding)を使用してください。このオプションを選択する前に、プロとシリアライズについて理解していることを確認してください。例えば内部プログラム構造の変更がディスクに反映される可能性があります。 –

0

あなたのポストによれば、暗号化/復号化の何らかの方法が必要なので、あなたのアルゴリズムの強さの問題を理解する必要があります。 あなたのデータを「隠す」方法はたくさんありますが、この「防御」は比較的簡単に壊れる可能性があります。 最も簡単な実装は(ナイーブ) です。文字列内の各文字をいくつかの数字に置き換えてください。 - 文字列内の文字のascii値で再生します。

もう一度本物の質問は、十分に良いかどうかです。 "セキュリティ"の観点から - 確かにそうではありません。