Khi chúng tôi tạo bất kỳ loại PRNG nào, chúng tôi có thể có dữ liệu không đồng nhất về entropy của nó. Ví dụ: có thể nguồn ngẫu nhiên an toàn bằng mật mã duy nhất của chúng tôi là một tập hợp UUID dạng chuỗi ngẫu nhiên. Tuy nhiên, trong hầu hết các triển khai PRNG, chúng tôi muốn tính ngẫu nhiên của mình đồng nhất và có kích thước cố định. Để có được điều đó, chúng tôi cần một số cách để chắt lọc đầu vào thành kích thước phù hợp và hàm băm là một cách dễ dàng để thực hiện điều đó.
Khi chúng tôi có PRNG không mã hóa, thông tin đầu vào mà người dùng cung cấp thường có thể có kích thước bất kỳ và thường hữu ích khi cho phép người dùng cung cấp một nguồn gốc tùy ý. Ví dụ: một số trò chơi điện tử cho phép bạn tạo PRNG của chúng bằng văn bản tùy ý để phát lại cùng một trò chơi và điều đó sẽ cần được chắt lọc thành đầu vào phù hợp, trong đó hàm băm phù hợp. Muối trong trường hợp này sẽ không hữu ích vì mục tiêu là tạo ra kết quả xác định.
Khi chúng tôi sử dụng CSPRNG, thuật toán chúng tôi sử dụng là xác định, nhưng chúng tôi muốn tạo nó với các đầu vào có đủ entropy để đảm bảo đầu ra của nó là không thể đoán được. Đó là, mục tiêu của chúng tôi là đầu ra không xác định. Một số thiết kế chọn buộc các đầu vào có entropy đồng nhất, nhưng hầu hết các thiết kế sử dụng một số loại hàm dẫn xuất, giống như hàm được sử dụng bởi CTR_DRBG, để cho phép các đầu vào không đồng nhất. Đôi khi các thuật toán đó dựa trên hàm băm và đôi khi thì không. Ví dụ: CTR_DRBG sử dụng hàm dẫn xuất dựa trên mật mã khối để làm cho toàn bộ thuật toán có thể thực hiện được chỉ bằng một triển khai AES. HMAC_DRBG sử dụng HMAC trong vai trò này, dựa trên hàm băm.
Các thiết kế DRBG cho phép sử dụng chuỗi muối hoặc chuỗi cá nhân hóa và điều này thường được khuyến nghị. Một loại muối cố định hoặc không ngẫu nhiên sẽ không cải thiện tính bảo mật nếu không đủ entropy, vì chúng tôi cho rằng muối là công khai, nhưng có những bối cảnh mà nó có thể hữu ích, chẳng hạn như nếu nhiều DRBG phải được tạo từ cùng một đầu vào entropy.
Có một số trường hợp chúng tôi sử dụng thiết kế CSPRNG cho đầu ra xác định không thể phân biệt được với ngẫu nhiên và muối rất hữu ích ở đó. Ví dụ: trong RFC 6979, mô tả DSA và ECDSA xác định, chúng tôi sử dụng HMAC_DRBG để tạo giá trị ngẫu nhiên $k$. Khóa riêng là đầu vào entropy của chúng tôi và hàm băm của tin nhắn là muối và cả hai đều cần thiết để bảo mật.