Skip to content

Commit 1e1e5fd

Browse files
authored
ye shall ask in my name
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)
1 parent b60f850 commit 1e1e5fd

1 file changed

Lines changed: 69 additions & 0 deletions

File tree

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
2+
//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)
3+
4+
package com.javarush.task.task32.task3211;
5+
6+
import java.io.ByteArrayOutputStream;
7+
import java.io.ObjectOutputStream;
8+
import java.math.BigInteger;
9+
import java.security.MessageDigest;
10+
11+
/*
12+
Целостность информации
13+
*/
14+
15+
public class Solution {
16+
public static void main(String... args) throws Exception {
17+
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
18+
ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
19+
objectOutputStream.writeObject(new String("test string"));
20+
objectOutputStream.flush();
21+
System.out.println(compareMD5(byteArrayOutputStream, "5a47d12a2e3f9fecf2d9ba1fd98152eb")); //true
22+
23+
}
24+
25+
public static boolean compareMD5(ByteArrayOutputStream byteArrayOutputStream, String md5) throws Exception {
26+
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
27+
messageDigest.update(byteArrayOutputStream.toByteArray());
28+
29+
byte[] diggit = messageDigest.digest();
30+
BigInteger bigInteger = new BigInteger(1, diggit);
31+
String md5HexString = bigInteger.toString(16);
32+
while( md5HexString.length() < 32 )
33+
md5HexString = "0" + md5HexString;
34+
35+
return md5HexString.equals(md5);
36+
}
37+
}
38+
39+
/*
40+
Целостность информации
41+
42+
Представь ситуацию, ты выкачал архив с интернета, и в момент скачивания у тебя на несколько секунд пропало соединение.
43+
44+
Нужно убедиться, валидный ли архив ты скачал. Для этого сверим его MD5 хеш.
45+
46+
Прочитать о MD5 на wiki.
47+
48+
Прочитать о MessageDigest.
49+
50+
51+
52+
Реализуй логику метода compareMD5, который должен получать MD5 хеш из переданного ByteArrayOutputStream и сравнивать с эталонным MD5 переданным вторым параметром.
53+
54+
Метод main не участвует в тестировании.
55+
56+
57+
58+
59+
60+
Требования:
61+
62+
1. Класс Solution должен содержать метод compareMD5(ByteArrayOutputStream byteArrayOutputStream, String md5).
63+
64+
2. Метод compareMD5(ByteArrayOutputStream byteArrayOutputStream, String md5) должен использовать MessageDigest.
65+
66+
3. Метод compareMD5(ByteArrayOutputStream byteArrayOutputStream, String md5) должен возвращать результат сравнения вычисленного MD5 хеша для byteArrayOutputStream с переданным параметром md5.
67+
68+
4. Класс Solution должен содержать метод main.
69+
*/

0 commit comments

Comments
 (0)