let plaintext_buf = &mut [0; 1024]; // Can't use PLAINTEXT.len() here. let plaintext = aead
.decrypt(1, AAD, ciphertext, plaintext_buf)
.expect("decrypt should also work");
assert_eq!(plaintext, PLAINTEXT);
// Decryption failures... // Different counter. let res = aead.decrypt(2, AAD, ciphertext, plaintext_buf);
assert!(res.is_err());
// Front-truncate ciphertext. let res = aead.decrypt(1, AAD, &ciphertext[1..], plaintext_buf);
assert!(res.is_err());
// End-truncate ciphertext. let ciphertext_last = ciphertext.len() - 1; let res = aead.decrypt(1, AAD, &ciphertext[..ciphertext_last], plaintext_buf);
assert!(res.is_err());
// Mess with the buffer. letmut scratch = Vec::new();
scratch.extend_from_slice(ciphertext);
// Toggle first octet.
scratch[0] ^= TOGGLE; let res = aead.decrypt(1, AAD, &scratch[..], plaintext_buf);
assert!(res.is_err());
// Toggle the auth tag.
scratch[0] ^= TOGGLE;
scratch[ciphertext_last] ^= TOGGLE; let res = aead.decrypt(1, AAD, &scratch[..], plaintext_buf);
assert!(res.is_err());
// Mess with the AAD.
scratch.clear();
scratch.extend_from_slice(AAD);
// Front-truncate. let res = aead.decrypt(1, &scratch[1..], ciphertext, plaintext_buf);
assert!(res.is_err());
// End-truncate. let aad_last = AAD.len() - 1; let res = aead.decrypt(1, &scratch[..aad_last], ciphertext, plaintext_buf);
assert!(res.is_err());
scratch[0] ^= TOGGLE; let res = aead.decrypt(1, &scratch[..], ciphertext, plaintext_buf);
assert!(res.is_err());
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-06-18)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.