diff --git a/quic/test_tools/test_ticket_crypter.cc b/quic/test_tools/test_ticket_crypter.cc
index 87ff202..40f28d2 100644
--- a/quic/test_tools/test_ticket_crypter.cc
+++ b/quic/test_tools/test_ticket_crypter.cc
@@ -7,6 +7,7 @@
 #include <cstring>
 
 #include "absl/base/macros.h"
+#include "net/third_party/quiche/src/quic/core/crypto/quic_random.h"
 
 namespace quic {
 namespace test {
@@ -25,22 +26,29 @@
 
 }  // namespace
 
+TestTicketCrypter::TestTicketCrypter()
+    : ticket_prefix_(ABSL_ARRAYSIZE(kTicketPrefix) + 16) {
+  memcpy(ticket_prefix_.data(), kTicketPrefix, ABSL_ARRAYSIZE(kTicketPrefix));
+  QuicRandom::GetInstance()->RandBytes(
+      ticket_prefix_.data() + ABSL_ARRAYSIZE(kTicketPrefix), 16);
+}
+
 size_t TestTicketCrypter::MaxOverhead() {
-  return ABSL_ARRAYSIZE(kTicketPrefix);
+  return ticket_prefix_.size();
 }
 
 std::vector<uint8_t> TestTicketCrypter::Encrypt(absl::string_view in) {
-  size_t prefix_len = ABSL_ARRAYSIZE(kTicketPrefix);
+  size_t prefix_len = ticket_prefix_.size();
   std::vector<uint8_t> out(prefix_len + in.size());
-  memcpy(out.data(), kTicketPrefix, prefix_len);
+  memcpy(out.data(), ticket_prefix_.data(), prefix_len);
   memcpy(out.data() + prefix_len, in.data(), in.size());
   return out;
 }
 
 std::vector<uint8_t> TestTicketCrypter::Decrypt(absl::string_view in) {
-  size_t prefix_len = ABSL_ARRAYSIZE(kTicketPrefix);
+  size_t prefix_len = ticket_prefix_.size();
   if (fail_decrypt_ || in.size() < prefix_len ||
-      memcmp(kTicketPrefix, in.data(), prefix_len) != 0) {
+      memcmp(ticket_prefix_.data(), in.data(), prefix_len) != 0) {
     return std::vector<uint8_t>();
   }
   return std::vector<uint8_t>(in.begin() + prefix_len, in.end());
