2017-08-17 18 views
0

私はに難読化します。(*)いくつかのパスワードは、Javaソースコードで非表示にします。Javaでの再現可能な暗号化(おそらくJasyptで)

発見中jasyptパスワードのテキストをあらかじめ暗号化しておき、記憶されたシード+暗号化されたパスワードからソースコードを解読すると考えました。しかし、暗号化処理が再現できていないようです:For example Zx5RdBLxIB1sPxG7Os3/G4aqqfy59l8nv3-D3AZWJAybdqWac9FsjdLgMqkAS9vSまたはghsD3wZwJAwjk9ghqwFLwqwgMqkwS9vS

BasicTextEncryptor bte = new BasicTextEncryptor(); 
bte.setPassword("something"); // the "seed" 
String ep = bte.encrypt("mypasswordtext") 

で暗号化されたパスワードテキストを生成するとき、私はいつもepで、私はそれを実行するたびに異なる暗号化されたパスワードを取り戻します。

実際のパスワードを生成するためにシードと暗号化された文字列を使用できるように、暗号化を再現可能にするにはどうすればよいですか?私はこれがすべてでパスワードを非表示にするには、安全な方法ではないことを知っているので、私は、「難読化」を使用しますが、少なくともそれは、人々がをglaningだけでパスワードを見つけることができないことができます


(*)ソースコードですべて保持しながら、ソースコードで使用します。

+1

解読されたパスワードはどうですか?解読されたパスワードが期待どおりのものであれば、暗号化されたパスワードが毎回異なるかどうかは重要ですか? (私は何らかのランダムパディングを疑う....) –

+0

元のパスワードを元に戻すかどうかを調べるために、暗号化された文字列をキーで_decrypt_しようとしましたか? –

+0

これはセキュリティプロパティです。私はこのパスワードを解読したいので特別なケースで決定論的な暗号化が必要な理由はありません。 –

答えて

2

BasicTextEncryptorは、暗号化を実行して出力に含めるたびにランダムな塩を生成します(http://www.jasypt.org/api/jasypt/1.9.0/org/jasypt/encryption/pbe/StandardPBEStringEncryptor.html#encrypt(java.lang.String)参照)。暗号文が同じではないにもかかわらず復号化は依然として機能するはずです。

毎回同じ結果を生成したい場合は、非ランダムソルトジェネレータでStandardPBEStringEncryptorを直接セットアップして設定する必要があります。

ただし、投稿の最後に記載されているように、これらのいずれかを行うのは良い方法ではありません。 「現実の」アプリケーションで作業している場合は、これらの秘密をソースコードにまったく格納しないでください。

+0

ありがとうございました!あなたは、暗号化された異なるパスワードをすべて使用して正しい解読作業を行います!私は、暗号化/復号化が1対1のマッピングであると誤解されていましたが、そうではありません。 (サイドノート:おそらく/暗号化された文字列が元のテキストよりもかなり長い理由です。 – halloleo

関連する問題