Advertisement
Guest User

Untitled

a guest
Aug 22nd, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.29 KB | None | 0 0
  1. package digest;
  2.  
  3. import java.nio.charset.StandardCharsets;
  4. import java.security.MessageDigest;
  5. import java.util.ArrayList;
  6. import java.util.Base64;
  7. import java.util.List;
  8. import java.util.Set;
  9. import java.util.concurrent.ExecutionException;
  10. import java.util.concurrent.ExecutorService;
  11. import java.util.concurrent.Executors;
  12. import java.util.concurrent.Future;
  13. import java.util.stream.Collectors;
  14.  
  15. public class MessageDigestTest {
  16. private final MessageDigest sharedMd;
  17.  
  18. private static final byte[] DATA1 = "the data".getBytes(StandardCharsets.UTF_8);
  19. private static final byte[] DATA2 = "more_data".getBytes(StandardCharsets.UTF_8);
  20. private static final byte[] DATA3 = "other data".getBytes(StandardCharsets.UTF_8);
  21.  
  22. public MessageDigestTest() throws Exception {
  23. sharedMd = MessageDigest.getInstance("SHA-256");
  24. }
  25.  
  26. public void calculateAndPrintHash() throws Exception {
  27. MessageDigest md = MessageDigest.getInstance("SHA-256");
  28.  
  29. md.update(DATA1);
  30. md.update(DATA2);
  31. byte[] hash = md.digest();
  32. System.out.println("Hash Calculated: " + Base64.getEncoder().encodeToString(hash));
  33.  
  34. md.update(DATA3);
  35. byte[] hash2 = md.digest();
  36. System.out.println("Hash2: " + Base64.getEncoder().encodeToString(hash2));
  37. }
  38.  
  39. public String calculateHash(byte[] data) throws Exception {
  40. MessageDigest md = MessageDigest.getInstance("SHA-256");
  41. md.update(data);
  42. byte[] hash = md.digest();
  43. return Base64.getEncoder().encodeToString(hash);
  44. }
  45.  
  46. public String calculateHashShared(byte[] data) {
  47. sharedMd.reset();
  48. sharedMd.update(data);
  49. byte[] hash = sharedMd.digest();
  50. return Base64.getEncoder().encodeToString(hash);
  51. }
  52.  
  53. public static void main(String[] args) throws Exception {
  54. MessageDigestTest test = new MessageDigestTest();
  55.  
  56. String hash1 = test.calculateHash(DATA1);
  57. String hash2 = test.calculateHash(DATA2);
  58.  
  59. List<Future<String>> hash1Futures = new ArrayList<>();
  60. List<Future<String>> hash2Futures = new ArrayList<>();
  61.  
  62. ExecutorService executor = Executors.newFixedThreadPool(5);
  63. for (int i = 0; i < 100; i++) {
  64. hash1Futures.add(executor.submit(() -> test.calculateHashShared(DATA1)));
  65. hash2Futures.add(executor.submit(() -> test.calculateHashShared(DATA2)));
  66. }
  67. executor.shutdown();
  68.  
  69. Set<String> hash1Results = hash1Futures.stream().map(t -> {
  70. try {
  71. return t.get();
  72. } catch (InterruptedException | ExecutionException e) {
  73. return e.toString();
  74. }
  75. }).collect(Collectors.toSet());
  76.  
  77. Set<String> hash2Results = hash2Futures.stream().map(t -> {
  78. try {
  79. return t.get();
  80. } catch (InterruptedException | ExecutionException e) {
  81. return e.toString();
  82. }
  83. }).collect(Collectors.toSet());
  84.  
  85. System.out.println("---");
  86. System.out.println("Expected Hash1: " + hash1);
  87. System.out.println("Hash1 Results: " + hash1Results);
  88. System.out.println("---");
  89. System.out.println("Expected Hash2: " + hash2);
  90. System.out.println("Hash2 Results: " + hash2Results);
  91. System.out.println("---");
  92. }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement