0

日付に基づいて暗号化および復号化したいファイルがあります。それを書くとき、私は現在の日付を使いたいのですが、時間ではありません。これには何を使用しますか?

その後、暗号化を解除したいときはいつでも、File.lastModified を使用して長い日付を取得できます。ここから、これを作成された日付 (または時刻ではなく) のみに変換するにはどうすればよいですか (または最後に変更されたもので、同じである必要があります)。

余分なライブラリは避けたいと思います。過度に複雑であれば問題ありません。データを暗号化していて、複雑なコードは詮索好きな人を遠ざけるのに役立つからです。何よりも、暗号化を無視しないように、すべてのロケールとプラットフォームで同じ方法で日付を読み取ることができる必要があります。

編集: URL の問題が解決しました。Java は、.net と ? の間に / が必要でした。以下では:

"http://login.minecraft.net/?user=" + username + "&password=" + password + "&version=99"

今、私の暗号化クラスが何かにひっくり返っています...

4

3 に答える 3

2

簡単な提案: 最初に日付を yyyy-mm-dd 文字列に変換します。次に、キーを作成するために必要なその他の関連データとともに文字列をハッシュします。long/date から string への変換については、「 timestamp long を通常の日付形式に変換」を参照してください。

于 2012-12-12T13:03:53.910 に答える
1
GregorianCalendar c = new GregorianCalendar(time);
c.set(GregorianCalendar.HOUR, 0);
c.set(GregorianCalendar.HOUR_OF_DAY, 0);
c.set(GregorianCalendar.MINUTE, 0);
c.set(GregorianCalendar.SECOND, 0);
c.set(GregorianCalendar.MILLISECOND, 0);
c.getTimeInMillis();
于 2012-12-12T13:12:42.877 に答える
-1

長時間値は次のように定義されます。

A milliseconds value represents the number of milliseconds that have passed since January 1, 1970 00:00:00.000 GMT. 

したがって、最も近い日に切り下げるには、次のようなものが必要です。

public static final long OneDay = 1000l * 60l * 60l * 24l;

long today = (System.currentTimeMillis() / OneDay) * OneDay;
Date lastMidnight = new Date(today);

ただし、潜在的なタイム ゾーンの問題を忘れないでください。

于 2012-12-12T13:19:37.183 に答える