diff --git a/fuzz/Cargo.toml b/fuzz/Cargo.toml
index 8b74839..ec3324b 100644
--- a/fuzz/Cargo.toml
+++ b/fuzz/Cargo.toml
@@ -11,7 +11,8 @@ cargo-fuzz = true
 [dependencies]
 rand = "0.6.1"
 rand_pcg = "0.1.1"
-ring = "0.13.5"
+sha2 = "0.10.6"
+
 [dependencies.base64]
 path = ".."
 [dependencies.libfuzzer-sys]
diff --git a/fuzz/fuzzers/roundtrip_no_pad.rs b/fuzz/fuzzers/roundtrip_no_pad.rs
index 813fcf6..d5ff485 100644
--- a/fuzz/fuzzers/roundtrip_no_pad.rs
+++ b/fuzz/fuzzers/roundtrip_no_pad.rs
@@ -3,12 +3,12 @@
 extern crate libfuzzer_sys;
 extern crate base64;
 
-use base64::engine::fast_portable;
+use base64::engine::{self, fast_portable};
 
 fuzz_target!(|data: &[u8]| {
     let config = fast_portable::FastPortableConfig::new()
         .with_encode_padding(false)
-        .with_decode_padding_mode(fast_portable::DecodePaddingMode::RequireNone);
+        .with_decode_padding_mode(engine::DecodePaddingMode::RequireNone);
     let engine = fast_portable::FastPortable::from(&base64::alphabet::STANDARD, config);
 
     let encoded = base64::encode_engine(&data, &engine);
diff --git a/fuzz/fuzzers/utils.rs b/fuzz/fuzzers/utils.rs
index 0e7e190..0158032 100644
--- a/fuzz/fuzzers/utils.rs
+++ b/fuzz/fuzzers/utils.rs
@@ -1,18 +1,20 @@
 extern crate rand;
 extern crate rand_pcg;
-extern crate ring;
+extern crate sha2;
 
-use base64::{alphabet, engine::fast_portable};
+use base64::{alphabet, engine::{self, fast_portable}};
 use self::rand::{Rng, SeedableRng};
 use self::rand_pcg::Pcg32;
-use self::ring::digest;
+use self::sha2::Digest as _;
 
 pub fn random_engine(data: &[u8]) -> fast_portable::FastPortable {
     // use sha256 of data as rng seed so it's repeatable
-    let sha = digest::digest(&digest::SHA256, data);
+    let mut hasher = sha2::Sha256::new();
+    hasher.update(data);
+    let sha = hasher.finalize();
 
     let mut seed: [u8; 16] = [0; 16];
-    seed.copy_from_slice(&sha.as_ref()[0..16]);
+    seed.copy_from_slice(&sha.as_slice()[0..16]);
 
     let mut rng = Pcg32::from_seed(seed);
 
@@ -24,9 +26,9 @@ pub fn random_engine(data: &[u8]) -> fast_portable::FastPortable {
 
     let encode_padding = rng.gen();
     let decode_padding = if encode_padding {
-        fast_portable::DecodePaddingMode::RequireCanonical
+        engine::DecodePaddingMode::RequireCanonical
     } else {
-        fast_portable::DecodePaddingMode::RequireNone
+        engine::DecodePaddingMode::RequireNone
     };
     let config = fast_portable::FastPortableConfig::new()
         .with_encode_padding(encode_padding)