Fix Display for hashes to include leading zeros.

Test: cargo test --features "insecure"

Change-Id: I45f0cd58ae0749fa3a4e856714bedd076f68a6ef
Reviewed-on: https://fuchsia-review.googlesource.com/c/mundane/+/410079
Reviewed-by: Joshua Liebow-Feeser <joshlf@google.com>
diff --git a/src/hash.rs b/src/hash.rs
index a3ab286..db4a118 100644
--- a/src/hash.rs
+++ b/src/hash.rs
@@ -286,7 +286,7 @@
         impl Display for $digest_name {
             fn fmt(&self, f: &mut Formatter) -> Result<(), fmt::Error> {
                 for byte in &self.0[..] {
-                    write!(f, "{:x}", byte)?;
+                    write!(f, "{:02x}", byte)?;
                 }
                 Ok(())
             }
@@ -4465,4 +4465,27 @@
             ),
         ];
     }
+
+    #[test]
+    fn test_display() {
+        assert_eq!(
+            Sha256::hash(&[]).to_string(),
+            "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
+        );
+        assert_eq!(
+            Sha384::hash(&[]).to_string(),
+            "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b"
+        );
+        assert_eq!(
+            Sha512::hash(&[]).to_string(),
+            "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e"
+        );
+
+        #[cfg(feature = "insecure")]
+        {
+            #[allow(deprecated)]
+            let hash = InsecureSha1::hash(&[]).to_string();
+            assert_eq!(hash, "da39a3ee5e6b4b0d3255bfef95601890afd80709");
+        }
+    }
 }