được dùng một cách công khai cho đường dây nóng Washington-Moscow và những ứng dụng trọng yếu khác. Vì mỗi một ký tự khoá đựơc dùng chỉ một lần, người giả mã có thể không còn cách nào tốt hơn là thử mọi chữ cái chìa khoá có thể có, cho mỗi một vị trí trong thông điệp, một trường hợp vô vọng hiển nhiên vì điều này khó ngang với việc thử tất cả các thông điệp có thể có. Tuy nhiên, dùng mỗi một chữ cái khoá chỉ một lần hiển nhiên dẫn tới một bài toán phân phối khoá dịch vụ, và việc đệm - một lần sẽ chỉ hữu ích đối với các hông điệp tương đối ngắn, không thường xuyên được gửi đi.
Nếu thông điệp và khoá được mã trong dạng nhị phân, ,một cơ chế phổ biến hơn để mã hoá từng vị trí một là dùng hàm "hoặc loại trừ " (XOR): để mã văn bản thật , "xor" nó ( từng bit một ) với khoá. Một đặc trưng hấp dẫn của phương pháp này là việc giải mã có cùng thao tác với việc mật mẫ: văn bản thật là sự XOR văn bản mã và khoá sẽ trả về văn bản thật. Chú ý rằng việc XOR của văn bản mã và văn bản thật sẽ là khoá. Điều này thoạt đầu có vẻ là đáng ngạc nhiên, nhưng thực sự nhiều hệ mật mã có tính chất là người giải mã có thể phát hiện ra khoá nếu như anh ta biết được văn bản thật.
Các máy mật mã / giải mã
Nhìêu ứng dụng mật mã ( ví dụ, các hệ thống tiếng nói dùng cho truyền thông quân sự ) có liên quan đến việc truyền đi một lượng lớn dữ liệu, và điều này khiến cho việc đệm một lần là không phù hợp. Những cái mà ta cần là xấp xỉ với đệm một lần trong đó một lượng lớn "chìa khoá giả " có thể được tạo ra từ một lượng nhỏ các khoá thật sé đựơc phân phối.
Cài đặt thông thường trong những trường hợp như vậy là như sau: một máy mật mã được cung cấp một vài biến mật mã ( cryptovariables) (khoá thực) bởi nơi gửi, dùng để tạo ra một dòng bit khoá dài ( khoá giả ). Việc XOR của các bit này và văn bản thật tạo ra văn bản mã. Nợi nhận có một máy tương tự và các biến mật mã, dùng chúng tạo ra cùng dòng khoá để XOR dựa trên văn bản mật mã và để lấy lại được văn bản thật.
Việc tạo khoá trong ngữ cảnh này rất giống với việc băm và phát sinh số ngãu nhiên. và các phương pháp đựơc bàn lậun trong chương 16 và 35 là thích hợp cho việc phát sinh khoá. Thực vậy, một vài cơ chế đựơc bàn luận trong chương 35 đầu tiên đã được phá triển cho việc sử dụng trong các máy mật mã \ giải mã như những cái được mô tả ở đây. Tuy nhiên, bộ phát sinh khoá phỉa là một cái gì đó phức tạp hơn các bộ sinh số ngẫu nhiên, vì có những cách để tấn công các máy đơn giản. Vấn đề là người giải mã có thể dễ dàng nhận dược một văn bản thật nào đó ( ví dụ nghe lén một hệ tiếng nói ), và do đó nhận được một khoá nào đó. Nếu người giải mã biết đủ về máy, thì khoá có thể cung cấp đủ các chi tiết rắc rối để cho phép các giá trị của tất cả các biến mật mã có thể được mô phổng và tất cả khoá được tính toán bắt đầu từ điểm đó.
Các nhà mật mã học có nhiều cách để tránh được những vấn đề như vậy. Có một cách là khiến cho một bô phận kiến trúc của chính máy đó trở thành một biến mật mã. Thông thường ta giải định làn người giải mã biết mọi thứ về kiến trúc của máy ( có thể là một cái máy bị đánh cắp ) ngoại trừ các biến mật mã, nhưng nếu một vài biến mật mã được dùng để "tạo cấu hình " cho máy, thì có thể khoá tìm được các giá trị của chúng. Một phương pháp khác đựơc sử dụng phổ biến để làm rối trí người giải mã là bộ mã sinh ( product cipher), trong đó hai máy khác nhau được tổ hợp lại để sinh ra một dong fkhoá phức tạp ( hay để điều khiển lẫn nhau . Phương pháp khác là thay thế không tuyến tính; ở đây việc dịch giữa văn bản thật và văn bản mã được thực hiện trong những đoạn lớn, không phải là từng bit một. Vấn đề thường thấy đối với các phương pháp phức tạp như vậy là chúng có thể là quá phức tạp ngay cả đối với nhà mật mã học để hiểu đựơc nó, và luôn luôn có khả năng là sự việc có thể trở nne tồi tệ hơn đối với mọt vài sự lựa chọn các biến mật mã nào đó.
Các hệ mật mã khoá - công khai
(Public - key cryptosystems)
Trong các ứng dụng thương mại như chuyển ngân điện tử và thư tín máy tính ( thực sự ) , bài toán phân phối khoá là nặng nề hơn so với các áp