Mã hóa bảo toàn định dạng sẽ hoạt động tốt. Thay đổi tôi sẽ thực hiện là không sử dụng nó làm 'tổng kiểm tra' mà thay vào đó chỉ lấy số vé (có thể là giá trị từ 0 đến 699 chẳng hạn) và FPE mã hóa số đó dưới dạng số có 12 chữ số). Bằng cách đó, bạn không phải lo lắng về 'entropy giới hạn', bởi vì việc phá vỡ nó sẽ yêu cầu đoán khóa (nếu là 128 bit trở lên thì quá khó) hoặc đoán ngẫu nhiên và hy vọng bạn đánh đúng mã vạch - trong trường hợp đó, nếu bạn phát hành 1.000 vé hợp lệ (và do đó, chỉ các giá trị giải mã thành 0 đến 999 mới được chấp nhận), xác suất đoán đúng là $10^{3-12}$, nghĩa là, một phần tỷ - tỷ lệ cược không thực sự tốt.
Vấn đề duy nhất tôi có thể thấy với FPE là không có triển khai chung (điều này thật đáng tiếc - tôi tin rằng FPE là một công cụ hữu ích nói chung)
Tuy nhiên, có một giải pháp thay thế thường có sẵn và cũng sẽ hoạt động tốt - Mã xác thực tin nhắn (MẠC).
MAC hoạt động giống như một chữ ký, ngoại trừ việc không có các khóa ký và xác minh riêng biệt - thay vào đó, một khóa thực hiện cả hai thao tác. Bạn sẽ tạo một khóa ngẫu nhiên và đưa khóa đó cho cả người phát hành vé và máy quét vé (giống như trong ý tưởng FPE).
Những gì bạn cần làm là ghi ba chữ số đầu tiên của vé là số sê-ri 000-999 (hoặc 699 nếu bạn có 700 khách). Phần còn lại của các chữ số sẽ là MAC của ba chữ số đầu tiên, được chuyển đổi thành số thập phân (và được cắt bớt một cách thích hợp). Để xác thực vé, máy quét sẽ lấy ba chữ số đầu tiên và tính toán MAC (sử dụng khóa mà nó biết) và kiểm tra 9 chữ số cuối cùng.
Điều này mang lại cho bạn khả năng bảo mật giống như ý tưởng FPE và việc triển khai MAC luôn sẵn có. Tất nhiên, với một FPE, bạn không phải lo lắng về việc chuyển đổi mọi thứ thành số thập phân (FPE có thể làm việc trực tiếp với các giá trị thập phân); MAC tiêu chuẩn hoạt động ở dạng nhị phân và do đó, để biến chúng thành số thập phân, sẽ cần một số loại chuyển đổi cơ sở; tuy nhiên, mã chuyển đổi cơ sở đơn giản hơn nhiều so với mã FPE đang hoạt động.
Có một số loại MAC có sẵn; Tôi sẽ tránh xa MAC bằng IV và gắn bó với HMAC, KMAC và CMAC.
Một vấn đề cuối cùng để bạn xem xét (không liên quan gì đến câu hỏi của bạn): một cuộc tấn công rõ ràng sẽ là lấy một vé hợp lệ và chạy nó qua một máy photocopy và tạo ra một số vé sẽ xác thực. Nếu bạn có một máy quét duy nhất, bạn có thể dễ dàng ngăn chặn điều đó (bằng cách để máy quét ghi nhớ tất cả các số sê-ri mà nó đã thấy trước đó). Nếu bạn có nhiều và họ không thể giao tiếp, thì đó là một vấn đề lớn hơn.