-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathSolution.java
More file actions
69 lines (42 loc) · 2.79 KB
/
Solution.java
File metadata and controls
69 lines (42 loc) · 2.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
//At that day ye shall ask in my name: and I say not unto you, that I will pray the Father for you (John 16:26)
package com.javarush.task.task32.task3211;
import java.io.ByteArrayOutputStream;
import java.io.ObjectOutputStream;
import java.math.BigInteger;
import java.security.MessageDigest;
/*
Целостность информации
*/
public class Solution {
public static void main(String... args) throws Exception {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
objectOutputStream.writeObject(new String("test string"));
objectOutputStream.flush();
System.out.println(compareMD5(byteArrayOutputStream, "5a47d12a2e3f9fecf2d9ba1fd98152eb")); //true
}
public static boolean compareMD5(ByteArrayOutputStream byteArrayOutputStream, String md5) throws Exception {
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
messageDigest.update(byteArrayOutputStream.toByteArray());
byte[] diggit = messageDigest.digest();
BigInteger bigInteger = new BigInteger(1, diggit);
String md5HexString = bigInteger.toString(16);
while( md5HexString.length() < 32 )
md5HexString = "0" + md5HexString;
return md5HexString.equals(md5);
}
}
/*
Целостность информации
Представь ситуацию, ты выкачал архив с интернета, и в момент скачивания у тебя на несколько секунд пропало соединение.
Нужно убедиться, валидный ли архив ты скачал. Для этого сверим его MD5 хеш.
Прочитать о MD5 на wiki.
Прочитать о MessageDigest.
Реализуй логику метода compareMD5, который должен получать MD5 хеш из переданного ByteArrayOutputStream и сравнивать с эталонным MD5 переданным вторым параметром.
Метод main не участвует в тестировании.
Требования:
1. Класс Solution должен содержать метод compareMD5(ByteArrayOutputStream byteArrayOutputStream, String md5).
2. Метод compareMD5(ByteArrayOutputStream byteArrayOutputStream, String md5) должен использовать MessageDigest.
3. Метод compareMD5(ByteArrayOutputStream byteArrayOutputStream, String md5) должен возвращать результат сравнения вычисленного MD5 хеша для byteArrayOutputStream с переданным параметром md5.
4. Класс Solution должен содержать метод main.
*/