0

我有一个要根据日期加密和解密的文件。编写时,我想使用当前日期,而不是时间。我会用什么来做这个?

然后,每当我想解密它时,我都可以使用 File.lastModified 来获取长日期。从这里,我如何将其仅转换为写入日期(而不是时间)(或上次修改,应该相同)?

我宁愿避免使用额外的库,如果它过于复杂,那很好,因为我正在加密数据,而复杂的代码将有助于摆脱窥探者。最重要的是,它需要能够以相同的方式跨所有语言环境和平台读取日期,以免丢失加密。

编辑: URL 问题已解决。Java 想要 / 在 .net 和 ? 在下面的:

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

现在我的加密课正在发生一些事情......

4

3 回答 3

2

简单的建议:首先将日期转换为 yyyy-mm-dd 字符串。其次,将字符串与您制作密钥所需的任何其他相关数据一起散列。请参阅将时间戳长转换为普通日期格式以进行长/日期到字符串的转换。

于 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 回答