Hex Artifact Content
Not logged in

Artifact c9b556e8aac4f1af16ffbe279ef26b5cb0a1b98a:


0000: 69 6d 70 6f 72 74 20 6a 61 76 61 2e 69 6f 2e 46  import java.io.F
0010: 69 6c 65 3b 0a 69 6d 70 6f 72 74 20 6a 61 76 61  ile;.import java
0020: 2e 69 6f 2e 49 4f 45 78 63 65 70 74 69 6f 6e 3b  .io.IOException;
0030: 0a 69 6d 70 6f 72 74 20 6a 61 76 61 2e 69 6f 2e  .import java.io.
0040: 50 72 69 6e 74 53 74 72 65 61 6d 3b 0a 69 6d 70  PrintStream;.imp
0050: 6f 72 74 20 6a 61 76 61 2e 75 74 69 6c 2e 45 6e  ort java.util.En
0060: 75 6d 53 65 74 3b 0a 0a 69 6d 70 6f 72 74 20 6f  umSet;..import o
0070: 72 67 2e 73 66 2e 72 68 61 73 68 2e 2a 3b 0a 69  rg.sf.rhash.*;.i
0080: 6d 70 6f 72 74 20 73 74 61 74 69 63 20 6f 72 67  mport static org
0090: 2e 73 66 2e 72 68 61 73 68 2e 48 61 73 68 54 79  .sf.rhash.HashTy
00a0: 70 65 2e 2a 3b 0a 0a 69 6d 70 6f 72 74 20 6f 72  pe.*;..import or
00b0: 67 2e 6a 75 6e 69 74 2e 54 65 73 74 3b 0a 69 6d  g.junit.Test;.im
00c0: 70 6f 72 74 20 6a 75 6e 69 74 2e 66 72 61 6d 65  port junit.frame
00d0: 77 6f 72 6b 2e 4a 55 6e 69 74 34 54 65 73 74 41  work.JUnit4TestA
00e0: 64 61 70 74 65 72 3b 0a 69 6d 70 6f 72 74 20 73  dapter;.import s
00f0: 74 61 74 69 63 20 6a 75 6e 69 74 2e 66 72 61 6d  tatic junit.fram
0100: 65 77 6f 72 6b 2e 54 65 73 74 43 61 73 65 2e 2a  ework.TestCase.*
0110: 3b 0a 0a 70 75 62 6c 69 63 20 63 6c 61 73 73 20  ;..public class 
0120: 52 48 61 73 68 54 65 73 74 20 7b 0a 0a 09 40 54  RHashTest {...@T
0130: 65 73 74 0a 09 70 75 62 6c 69 63 20 76 6f 69 64  est..public void
0140: 20 74 65 73 74 41 6c 6c 48 61 73 68 65 73 28 29   testAllHashes()
0150: 20 7b 0a 09 09 52 48 61 73 68 20 72 20 3d 20 6e   {...RHash r = n
0160: 65 77 20 52 48 61 73 68 28 45 6e 75 6d 53 65 74  ew RHash(EnumSet
0170: 2e 61 6c 6c 4f 66 28 48 61 73 68 54 79 70 65 2e  .allOf(HashType.
0180: 63 6c 61 73 73 29 29 3b 0a 09 09 72 2e 75 70 64  class));...r.upd
0190: 61 74 65 28 22 61 22 29 2e 66 69 6e 69 73 68 28  ate("a").finish(
01a0: 29 3b 0a 09 09 0a 09 09 61 73 73 65 72 74 45 71  );......assertEq
01b0: 75 61 6c 73 28 22 65 38 62 37 62 65 34 33 22 2c  uals("e8b7be43",
01c0: 20 72 2e 67 65 74 44 69 67 65 73 74 28 43 52 43   r.getDigest(CRC
01d0: 33 32 29 2e 74 6f 53 74 72 69 6e 67 28 29 29 3b  32).toString());
01e0: 0a 09 09 61 73 73 65 72 74 45 71 75 61 6c 73 28  ...assertEquals(
01f0: 22 62 64 65 35 32 63 62 33 31 64 65 33 33 65 34  "bde52cb31de33e4
0200: 36 32 34 35 65 30 35 66 62 64 62 64 36 66 62 32  6245e05fbdbd6fb2
0210: 34 22 2c 20 72 2e 67 65 74 44 69 67 65 73 74 28  4", r.getDigest(
0220: 4d 44 34 29 2e 74 6f 53 74 72 69 6e 67 28 29 29  MD4).toString())
0230: 3b 0a 09 09 61 73 73 65 72 74 45 71 75 61 6c 73  ;...assertEquals
0240: 28 22 30 63 63 31 37 35 62 39 63 30 66 31 62 36  ("0cc175b9c0f1b6
0250: 61 38 33 31 63 33 39 39 65 32 36 39 37 37 32 36  a831c399e2697726
0260: 36 31 22 2c 20 72 2e 67 65 74 44 69 67 65 73 74  61", r.getDigest
0270: 28 4d 44 35 29 2e 74 6f 53 74 72 69 6e 67 28 29  (MD5).toString()
0280: 29 3b 0a 09 09 61 73 73 65 72 74 45 71 75 61 6c  );...assertEqual
0290: 73 28 22 38 36 66 37 65 34 33 37 66 61 61 35 61  s("86f7e437faa5a
02a0: 37 66 63 65 31 35 64 31 64 64 63 62 39 65 61 65  7fce15d1ddcb9eae
02b0: 61 65 61 33 37 37 36 36 37 62 38 22 2c 20 72 2e  aea377667b8", r.
02c0: 67 65 74 44 69 67 65 73 74 28 53 48 41 31 29 2e  getDigest(SHA1).
02d0: 74 6f 53 74 72 69 6e 67 28 29 29 3b 0a 09 09 61  toString());...a
02e0: 73 73 65 72 74 45 71 75 61 6c 73 28 22 37 37 62  ssertEquals("77b
02f0: 65 66 62 65 66 32 65 37 65 66 38 61 62 32 65 63  efbef2e7ef8ab2ec
0300: 38 66 39 33 62 66 35 38 37 61 37 66 63 36 31 33  8f93bf587a7fc613
0310: 65 32 34 37 66 35 66 32 34 37 38 30 39 22 2c 20  e247f5f247809", 
0320: 72 2e 67 65 74 44 69 67 65 73 74 28 54 49 47 45  r.getDigest(TIGE
0330: 52 29 2e 74 6f 53 74 72 69 6e 67 28 29 29 3b 0a  R).toString());.
0340: 09 09 61 73 73 65 72 74 45 71 75 61 6c 73 28 22  ..assertEquals("
0350: 63 7a 71 75 77 68 33 69 79 78 62 66 35 6c 33 62  czquwh3iyxbf5l3b
0360: 67 79 75 67 7a 68 61 73 73 6d 78 75 36 34 37 69  gyugzhassmxu647i
0370: 70 32 69 6b 65 34 79 22 2c 20 72 2e 67 65 74 44  p2ike4y", r.getD
0380: 69 67 65 73 74 28 54 54 48 29 2e 74 6f 53 74 72  igest(TTH).toStr
0390: 69 6e 67 28 29 29 3b 0a 09 09 61 73 73 65 72 74  ing());...assert
03a0: 45 71 75 61 6c 73 28 34 30 2c 20 72 2e 67 65 74  Equals(40, r.get
03b0: 44 69 67 65 73 74 28 42 54 49 48 29 2e 74 6f 53  Digest(BTIH).toS
03c0: 74 72 69 6e 67 28 29 2e 6c 65 6e 67 74 68 28 29  tring().length()
03d0: 29 3b 0a 09 09 61 73 73 65 72 74 45 71 75 61 6c  );...assertEqual
03e0: 73 28 22 62 64 65 35 32 63 62 33 31 64 65 33 33  s("bde52cb31de33
03f0: 65 34 36 32 34 35 65 30 35 66 62 64 62 64 36 66  e46245e05fbdbd6f
0400: 62 32 34 22 2c 20 72 2e 67 65 74 44 69 67 65 73  b24", r.getDiges
0410: 74 28 45 44 32 4b 29 2e 74 6f 53 74 72 69 6e 67  t(ED2K).toString
0420: 28 29 29 3b 0a 09 09 61 73 73 65 72 74 45 71 75  ());...assertEqu
0430: 61 6c 73 28 22 71 33 33 36 69 6e 37 32 75 77 74  als("q336in72uwt
0440: 37 7a 79 6b 35 64 78 6f 6c 74 32 78 6b 35 69 33  7zyk5dxolt2xk5i3
0450: 78 6d 7a 35 79 22 2c 20 72 2e 67 65 74 44 69 67  xmz5y", r.getDig
0460: 65 73 74 28 41 49 43 48 29 2e 74 6f 53 74 72 69  est(AICH).toStri
0470: 6e 67 28 29 29 3b 0a 09 09 61 73 73 65 72 74 45  ng());...assertE
0480: 71 75 61 6c 73 28 22 38 61 63 61 32 36 30 32 37  quals("8aca26027
0490: 39 32 61 65 63 36 66 31 31 61 36 37 32 30 36 35  92aec6f11a672065
04a0: 33 31 66 62 37 64 37 66 30 64 66 66 35 39 34 31  31fb7d7f0dff5941
04b0: 33 31 34 35 65 36 39 37 33 63 34 35 30 30 31 64  3145e6973c45001d
04c0: 30 30 38 37 62 34 32 64 31 31 62 63 36 34 35 34  0087b42d11bc6454
04d0: 31 33 61 65 66 66 36 33 61 34 32 33 39 31 61 33  13aeff63a42391a3
04e0: 39 31 34 35 61 35 39 31 61 39 32 32 30 30 64 35  9145a591a92200d5
04f0: 36 30 31 39 35 65 35 33 62 34 37 38 35 38 34 66  60195e53b478584f
0500: 64 61 65 32 33 31 61 22 2c 20 72 2e 67 65 74 44  dae231a", r.getD
0510: 69 67 65 73 74 28 57 48 49 52 4c 50 4f 4f 4c 29  igest(WHIRLPOOL)
0520: 2e 74 6f 53 74 72 69 6e 67 28 29 29 3b 0a 09 09  .toString());...
0530: 61 73 73 65 72 74 45 71 75 61 6c 73 28 22 30 62  assertEquals("0b
0540: 64 63 39 64 32 64 32 35 36 62 33 65 65 39 64 61  dc9d2d256b3ee9da
0550: 61 65 33 34 37 62 65 36 66 34 64 63 38 33 35 61  ae347be6f4dc835a
0560: 34 36 37 66 66 65 22 2c 20 72 2e 67 65 74 44 69  467ffe", r.getDi
0570: 67 65 73 74 28 52 49 50 45 4d 44 31 36 30 29 2e  gest(RIPEMD160).
0580: 74 6f 53 74 72 69 6e 67 28 29 29 3b 0a 09 09 61  toString());...a
0590: 73 73 65 72 74 45 71 75 61 6c 73 28 22 64 34 32  ssertEquals("d42
05a0: 63 35 33 39 65 33 36 37 63 36 36 65 39 63 38 38  c539e367c66e9c88
05b0: 61 38 30 31 66 36 36 34 39 33 34 39 63 32 31 38  a801f6649349c218
05c0: 37 31 62 34 33 34 34 63 36 61 35 37 33 66 38 34  71b4344c6a573f84
05d0: 39 66 64 63 65 36 32 66 33 31 34 64 64 22 2c 20  9fdce62f314dd", 
05e0: 72 2e 67 65 74 44 69 67 65 73 74 28 47 4f 53 54  r.getDigest(GOST
05f0: 29 2e 74 6f 53 74 72 69 6e 67 28 29 29 3b 0a 09  ).toString());..
0600: 09 61 73 73 65 72 74 45 71 75 61 6c 73 28 22 65  .assertEquals("e
0610: 37 34 63 35 32 64 64 32 38 32 31 38 33 62 66 33  74c52dd282183bf3
0620: 37 61 66 30 30 37 39 63 39 66 37 38 30 35 35 37  7af0079c9f780557
0630: 31 35 61 31 30 33 66 31 37 65 33 31 33 33 63 65  15a103f17e3133ce
0640: 66 66 31 61 61 63 66 32 66 34 30 33 30 31 31 22  ff1aacf2f403011"
0650: 2c 20 72 2e 67 65 74 44 69 67 65 73 74 28 47 4f  , r.getDigest(GO
0660: 53 54 5f 43 52 59 50 54 4f 50 52 4f 29 2e 74 6f  ST_CRYPTOPRO).to
0670: 53 74 72 69 6e 67 28 29 29 3b 0a 09 09 61 73 73  String());...ass
0680: 65 72 74 45 71 75 61 6c 73 28 22 34 38 37 32 62  ertEquals("4872b
0690: 63 62 63 34 63 64 30 66 30 61 39 64 63 37 63 32  cbc4cd0f0a9dc7c2
06a0: 66 37 30 34 35 65 35 62 34 33 62 36 63 38 33 30  f7045e5b43b6c830
06b0: 64 62 38 22 2c 20 72 2e 67 65 74 44 69 67 65 73  db8", r.getDiges
06c0: 74 28 48 41 53 31 36 30 29 2e 74 6f 53 74 72 69  t(HAS160).toStri
06d0: 6e 67 28 29 29 3b 0a 09 09 61 73 73 65 72 74 45  ng());...assertE
06e0: 71 75 61 6c 73 28 22 62 66 35 63 65 35 34 30 61  quals("bf5ce540a
06f0: 65 35 31 62 63 35 30 33 39 39 66 39 36 37 34 36  e51bc50399f96746
0700: 63 35 61 31 35 62 64 22 2c 20 72 2e 67 65 74 44  c5a15bd", r.getD
0710: 69 67 65 73 74 28 53 4e 45 46 52 55 31 32 38 29  igest(SNEFRU128)
0720: 2e 74 6f 53 74 72 69 6e 67 28 29 29 3b 0a 09 09  .toString());...
0730: 61 73 73 65 72 74 45 71 75 61 6c 73 28 22 34 35  assertEquals("45
0740: 31 36 31 35 38 39 61 63 33 31 37 62 65 30 63 65  161589ac317be0ce
0750: 62 61 37 30 64 62 32 35 37 33 64 64 64 61 36 65  ba70db2573ddda6e
0760: 36 36 38 61 33 31 39 38 34 62 33 39 62 66 36 35  668a31984b39bf65
0770: 65 34 62 36 36 34 62 35 38 34 63 36 33 64 22 2c  e4b664b584c63d",
0780: 20 72 2e 67 65 74 44 69 67 65 73 74 28 53 4e 45   r.getDigest(SNE
0790: 46 52 55 32 35 36 29 2e 74 6f 53 74 72 69 6e 67  FRU256).toString
07a0: 28 29 29 3b 0a 09 09 61 73 73 65 72 74 45 71 75  ());...assertEqu
07b0: 61 6c 73 28 22 61 62 64 33 37 35 33 34 63 37 64  als("abd37534c7d
07c0: 39 61 32 65 66 62 39 34 36 35 64 65 39 33 31 63  9a2efb9465de931c
07d0: 64 37 30 35 35 66 66 64 62 38 38 37 39 35 36 33  d7055ffdb8879563
07e0: 61 65 39 38 30 37 38 64 36 64 36 64 35 22 2c 20  ae98078d6d6d5", 
07f0: 72 2e 67 65 74 44 69 67 65 73 74 28 53 48 41 32  r.getDigest(SHA2
0800: 32 34 29 2e 74 6f 53 74 72 69 6e 67 28 29 29 3b  24).toString());
0810: 0a 09 09 61 73 73 65 72 74 45 71 75 61 6c 73 28  ...assertEquals(
0820: 22 63 61 39 37 38 31 31 32 63 61 31 62 62 64 63  "ca978112ca1bbdc
0830: 61 66 61 63 32 33 31 62 33 39 61 32 33 64 63 34  afac231b39a23dc4
0840: 64 61 37 38 36 65 66 66 38 31 34 37 63 34 65 37  da786eff8147c4e7
0850: 32 62 39 38 30 37 37 38 35 61 66 65 65 34 38 62  2b9807785afee48b
0860: 62 22 2c 20 72 2e 67 65 74 44 69 67 65 73 74 28  b", r.getDigest(
0870: 53 48 41 32 35 36 29 2e 74 6f 53 74 72 69 6e 67  SHA256).toString
0880: 28 29 29 3b 0a 09 09 61 73 73 65 72 74 45 71 75  ());...assertEqu
0890: 61 6c 73 28 22 35 34 61 35 39 62 39 66 32 32 62  als("54a59b9f22b
08a0: 30 62 38 30 38 38 30 64 38 34 32 37 65 35 34 38  0b80880d8427e548
08b0: 62 37 63 32 33 61 62 64 38 37 33 34 38 36 65 31  b7c23abd873486e1
08c0: 66 30 33 35 64 63 65 39 63 64 36 39 37 65 38 35  f035dce9cd697e85
08d0: 31 37 35 30 33 33 63 61 61 38 38 65 36 64 35 37  175033caa88e6d57
08e0: 62 63 33 35 65 66 61 65 30 62 35 61 66 64 33 31  bc35efae0b5afd31
08f0: 34 35 66 33 31 22 2c 20 72 2e 67 65 74 44 69 67  45f31", r.getDig
0900: 65 73 74 28 53 48 41 33 38 34 29 2e 74 6f 53 74  est(SHA384).toSt
0910: 72 69 6e 67 28 29 29 3b 0a 09 09 61 73 73 65 72  ring());...asser
0920: 74 45 71 75 61 6c 73 28 22 31 66 34 30 66 63 39  tEquals("1f40fc9
0930: 32 64 61 32 34 31 36 39 34 37 35 30 39 37 39 65  2da241694750979e
0940: 65 36 63 66 35 38 32 66 32 64 35 64 37 64 32 38  e6cf582f2d5d7d28
0950: 65 31 38 33 33 35 64 65 30 35 61 62 63 35 34 64  e18335de05abc54d
0960: 30 35 36 30 65 30 66 35 33 30 32 38 36 30 63 36  0560e0f5302860c6
0970: 35 32 62 66 30 38 64 35 36 30 32 35 32 61 61 35  52bf08d560252aa5
0980: 65 37 34 32 31 30 35 34 36 66 33 36 39 66 62 62  e74210546f369fbb
0990: 62 63 65 38 63 31 32 63 66 63 37 39 35 37 62 32  bce8c12cfc7957b2
09a0: 36 35 32 66 65 39 61 37 35 22 2c 20 72 2e 67 65  652fe9a75", r.ge
09b0: 74 44 69 67 65 73 74 28 53 48 41 35 31 32 29 2e  tDigest(SHA512).
09c0: 74 6f 53 74 72 69 6e 67 28 29 29 3b 0a 09 09 61  toString());...a
09d0: 73 73 65 72 74 45 71 75 61 6c 73 28 22 39 34 33  ssertEquals("943
09e0: 61 61 39 32 32 35 61 32 63 66 31 35 34 65 63 32  aa9225a2cf154ec2
09f0: 65 34 64 64 38 31 32 33 37 37 32 30 62 61 35 33  e4dd81237720ba53
0a00: 38 63 61 38 64 66 32 66 64 38 33 63 30 62 38 39  8ca8df2fd83c0b89
0a10: 33 63 35 64 32 36 35 66 33 35 33 61 30 22 2c 20  3c5d265f353a0", 
0a20: 72 2e 67 65 74 44 69 67 65 73 74 28 45 44 4f 4e  r.getDigest(EDON
0a30: 52 32 35 36 29 2e 74 6f 53 74 72 69 6e 67 28 29  R256).toString()
0a40: 29 3b 0a 09 09 61 73 73 65 72 74 45 71 75 61 6c  );...assertEqual
0a50: 73 28 22 62 35 39 65 63 34 34 66 37 62 65 65 66  s("b59ec44f7beef
0a60: 38 61 30 34 63 65 65 64 33 38 61 39 37 33 64 37  8a04ceed38a973d7
0a70: 37 63 36 35 65 32 32 65 39 34 35 38 64 35 66 36  7c65e22e9458d5f6
0a80: 37 62 34 39 37 39 34 38 64 61 33 34 39 38 36 63  7b497948da34986c
0a90: 30 39 33 62 35 65 66 63 35 34 38 33 66 62 65 65  093b5efc5483fbee
0aa0: 35 35 66 32 66 37 34 30 66 63 61 64 33 31 66 31  55f2f740fcad31f1
0ab0: 38 64 38 30 64 62 34 34 62 62 36 62 38 38 34 33  8d80db44bb6b8843
0ac0: 65 37 66 64 35 39 39 31 38 38 65 37 63 30 37 32  e7fd599188e7c072
0ad0: 33 33 62 22 2c 20 72 2e 67 65 74 44 69 67 65 73  33b", r.getDiges
0ae0: 74 28 45 44 4f 4e 52 35 31 32 29 2e 74 6f 53 74  t(EDONR512).toSt
0af0: 72 69 6e 67 28 29 29 3b 0a 09 09 61 73 73 65 72  ring());...asser
0b00: 74 45 71 75 61 6c 73 28 22 39 65 38 36 66 66 36  tEquals("9e86ff6
0b10: 39 35 35 37 63 61 39 35 66 34 30 35 66 30 38 31  9557ca95f405f081
0b20: 32 36 39 36 38 35 62 33 38 65 33 61 38 31 39 62  269685b38e3a819b
0b30: 33 30 39 65 65 39 34 32 66 34 38 32 62 36 61 38  309ee942f482b6a8
0b40: 62 22 2c 20 72 2e 67 65 74 44 69 67 65 73 74 28  b", r.getDigest(
0b50: 53 48 41 33 5f 32 32 34 29 2e 74 6f 53 74 72 69  SHA3_224).toStri
0b60: 6e 67 28 29 29 3b 0a 09 09 61 73 73 65 72 74 45  ng());...assertE
0b70: 71 75 61 6c 73 28 22 38 30 30 38 34 62 66 32 66  quals("80084bf2f
0b80: 62 61 30 32 34 37 35 37 32 36 66 65 62 32 63 61  ba02475726feb2ca
0b90: 62 32 64 38 32 31 35 65 61 62 31 34 62 63 36 62  b2d8215eab14bc6b
0ba0: 64 64 38 62 66 62 32 63 38 31 35 31 32 35 37 30  dd8bfb2c81512570
0bb0: 33 32 65 63 64 38 62 22 2c 20 72 2e 67 65 74 44  32ecd8b", r.getD
0bc0: 69 67 65 73 74 28 53 48 41 33 5f 32 35 36 29 2e  igest(SHA3_256).
0bd0: 74 6f 53 74 72 69 6e 67 28 29 29 3b 0a 09 09 61  toString());...a
0be0: 73 73 65 72 74 45 71 75 61 6c 73 28 22 31 38 31  ssertEquals("181
0bf0: 35 66 37 37 34 66 33 32 30 34 39 31 62 34 38 35  5f774f320491b485
0c00: 36 39 65 66 65 63 37 39 34 64 32 34 39 65 65 62  69efec794d249eeb
0c10: 35 39 61 61 65 34 36 64 32 32 62 66 37 37 64 61  59aae46d22bf77da
0c20: 66 65 32 35 63 35 65 64 63 32 38 64 37 65 61 34  fe25c5edc28d7ea4
0c30: 34 66 39 33 65 65 31 32 33 34 61 61 38 38 66 36  4f93ee1234aa88f6
0c40: 31 63 39 31 39 31 32 61 34 63 63 64 39 22 2c 20  1c91912a4ccd9", 
0c50: 72 2e 67 65 74 44 69 67 65 73 74 28 53 48 41 33  r.getDigest(SHA3
0c60: 5f 33 38 34 29 2e 74 6f 53 74 72 69 6e 67 28 29  _384).toString()
0c70: 29 3b 0a 09 09 61 73 73 65 72 74 45 71 75 61 6c  );...assertEqual
0c80: 73 28 22 36 39 37 66 32 64 38 35 36 31 37 32 63  s("697f2d856172c
0c90: 62 38 33 30 39 64 36 62 38 62 39 37 64 61 63 34  b8309d6b8b97dac4
0ca0: 64 65 33 34 34 62 35 34 39 64 34 64 65 65 36 31  de344b549d4dee61
0cb0: 65 64 66 62 34 39 36 32 64 38 36 39 38 62 37 66  edfb4962d8698b7f
0cc0: 61 38 30 33 66 34 66 39 33 66 66 32 34 33 39 33  a803f4f93ff24393
0cd0: 35 38 36 65 32 38 62 35 62 39 35 37 61 63 33 64  586e28b5b957ac3d
0ce0: 31 64 33 36 39 34 32 30 63 65 35 33 33 33 32 37  1d369420ce533327
0cf0: 31 32 66 39 39 37 62 64 33 33 36 64 30 39 61 62  12f997bd336d09ab
0d00: 30 32 61 22 2c 20 72 2e 67 65 74 44 69 67 65 73  02a", r.getDiges
0d10: 74 28 53 48 41 33 5f 35 31 32 29 2e 74 6f 53 74  t(SHA3_512).toSt
0d20: 72 69 6e 67 28 29 29 3b 0a 0a 09 09 72 2e 72 65  ring());....r.re
0d30: 73 65 74 28 29 3b 0a 09 09 72 2e 66 69 6e 69 73  set();...r.finis
0d40: 68 28 29 3b 0a 09 09 61 73 73 65 72 74 45 71 75  h();...assertEqu
0d50: 61 6c 73 28 22 64 34 31 64 38 63 64 39 38 66 30  als("d41d8cd98f0
0d60: 30 62 32 30 34 65 39 38 30 30 39 39 38 65 63 66  0b204e9800998ecf
0d70: 38 34 32 37 65 22 2c 20 72 2e 67 65 74 44 69 67  8427e", r.getDig
0d80: 65 73 74 28 4d 44 35 29 2e 74 6f 53 74 72 69 6e  est(MD5).toStrin
0d90: 67 28 29 29 3b 20 2f 2f 20 4d 44 35 20 6f 66 20  g()); // MD5 of 
0da0: 22 22 0a 09 7d 0a 0a 09 40 54 65 73 74 0a 09 70  ""..}...@Test..p
0db0: 75 62 6c 69 63 20 76 6f 69 64 20 74 65 73 74 4d  ublic void testM
0dc0: 61 67 6e 65 74 28 29 20 7b 0a 09 09 52 48 61 73  agnet() {...RHas
0dd0: 68 20 72 20 3d 20 6e 65 77 20 52 48 61 73 68 28  h r = new RHash(
0de0: 4d 44 35 2c 20 54 54 48 29 3b 0a 09 09 72 2e 75  MD5, TTH);...r.u
0df0: 70 64 61 74 65 28 22 61 62 63 22 29 2e 66 69 6e  pdate("abc").fin
0e00: 69 73 68 28 29 3b 0a 09 09 61 73 73 65 72 74 45  ish();...assertE
0e10: 71 75 61 6c 73 28 22 6d 61 67 6e 65 74 3a 3f 78  quals("magnet:?x
0e20: 6c 3d 33 26 64 6e 3d 66 69 6c 65 2e 74 78 74 26  l=3&dn=file.txt&
0e30: 78 74 3d 75 72 6e 3a 6d 64 35 3a 39 30 30 31 35  xt=urn:md5:90015
0e40: 30 39 38 33 63 64 32 34 66 62 30 64 36 39 36 33  0983cd24fb0d6963
0e50: 66 37 64 32 38 65 31 37 66 37 32 26 78 74 3d 75  f7d28e17f72&xt=u
0e60: 72 6e 3a 74 72 65 65 3a 74 69 67 65 72 3a 61 73  rn:tree:tiger:as
0e70: 64 34 75 6a 73 65 68 35 6d 34 37 70 64 79 62 34  d4ujseh5m47pdyb4
0e80: 36 6b 62 74 73 71 74 73 67 64 6b 6c 62 68 79 78  6kbtsqtsgdklbhyx
0e90: 6f 6d 75 69 61 22 2c 20 72 2e 67 65 74 4d 61 67  omuia", r.getMag
0ea0: 6e 65 74 28 22 66 69 6c 65 2e 74 78 74 22 29 29  net("file.txt"))
0eb0: 3b 0a 20 20 20 20 7d 0a 0a 09 40 54 65 73 74 0a  ;.    }...@Test.
0ec0: 09 70 75 62 6c 69 63 20 76 6f 69 64 20 74 65 73  .public void tes
0ed0: 74 55 70 64 61 74 65 46 69 6c 65 28 29 20 74 68  tUpdateFile() th
0ee0: 72 6f 77 73 20 49 4f 45 78 63 65 70 74 69 6f 6e  rows IOException
0ef0: 20 7b 0a 09 09 46 69 6c 65 20 66 20 3d 20 6e 65   {...File f = ne
0f00: 77 20 46 69 6c 65 28 22 6a 61 76 61 5f 74 65 73  w File("java_tes
0f10: 74 5f 69 6e 70 75 74 5f 31 32 33 2e 74 78 74 22  t_input_123.txt"
0f20: 29 3b 0a 09 09 50 72 69 6e 74 53 74 72 65 61 6d  );...PrintStream
0f30: 20 6f 75 74 20 3d 20 6e 65 77 20 50 72 69 6e 74   out = new Print
0f40: 53 74 72 65 61 6d 28 66 29 3b 0a 09 09 6f 75 74  Stream(f);...out
0f50: 2e 70 72 69 6e 74 6c 6e 28 22 5c 30 5c 31 5c 32  .println("\0\1\2
0f60: 22 29 3b 0a 09 09 6f 75 74 2e 66 6c 75 73 68 28  ");...out.flush(
0f70: 29 3b 0a 09 09 6f 75 74 2e 63 6c 6f 73 65 28 29  );...out.close()
0f80: 3b 0a 09 09 61 73 73 65 72 74 45 71 75 61 6c 73  ;...assertEquals
0f90: 28 22 65 33 38 36 39 65 63 34 37 37 36 36 31 66  ("e3869ec477661f
0fa0: 61 64 36 62 39 66 63 32 35 39 31 34 62 62 32 65  ad6b9fc25914bb2e
0fb0: 65 65 35 34 35 35 62 34 38 33 22 2c 20 52 48 61  ee5455b483", RHa
0fc0: 73 68 2e 63 6f 6d 70 75 74 65 48 61 73 68 28 53  sh.computeHash(S
0fd0: 48 41 31 2c 20 66 29 2e 74 6f 53 74 72 69 6e 67  HA1, f).toString
0fe0: 28 29 29 3b 0a 09 09 66 2e 64 65 6c 65 74 65 28  ());...f.delete(
0ff0: 29 3b 0a 20 20 20 20 7d 0a 0a 09 70 75 62 6c 69  );.    }...publi
1000: 63 20 73 74 61 74 69 63 20 6a 75 6e 69 74 2e 66  c static junit.f
1010: 72 61 6d 65 77 6f 72 6b 2e 54 65 73 74 20 73 75  ramework.Test su
1020: 69 74 65 28 29 7b 0a 09 09 72 65 74 75 72 6e 20  ite(){...return 
1030: 6e 65 77 20 4a 55 6e 69 74 34 54 65 73 74 41 64  new JUnit4TestAd
1040: 61 70 74 65 72 28 52 48 61 73 68 54 65 73 74 2e  apter(RHashTest.
1050: 63 6c 61 73 73 29 3b 0a 09 7d 0a 7d 0a           class);..}.}.