Việc triển khai phần mềm là một phần mềm chạy trên một tiêu chuẩn CPU hoặc bộ vi xử lý, thực thi hầu hết các hướng dẫn chung đơn giản tuần tự không dành riêng cho mật mã. Thuật toán mật mã được thể hiện dưới dạng các hướng dẫn như vậy, có lẽ sau khi biên dịch từ một ngôn ngữ cấp thấp hơn, như C.
Việc triển khai phần cứng chạy trên một thứ khác. Đó có thể là một ASIC, một FPGA. Ngày nay, đó thường là một khu vực dành riêng cho một khu vực rộng lớn hơn Mạch tích hợp; ví dụ. một Thẻ thông minh ngân hàng điển hình bao gồm phần cứng chuyên dụng cho 3DES, AES, RSA hoặc và Mật mã đường cong elip. Ngày nay, thuật toán mã hóa thường được chuyển thành một thiết kế được thể hiện bằng một số Ngôn ngữ mô tả phần cứng Như là VHDL, sau đó được biên dịch thành một thiết kế silicon hoặc cấu hình của một FPGA.
Việc triển khai phần cứng có khả năng nhanh hơn hoặc/và ít ngốn điện hơn so với triển khai phần mềm, đối với cùng một thuật toán. Một ví dụ cực đoan về điều đó là các công cụ khai thác bitcoin, khoe khoang hiệu quả như 18â 10-12MỘT Joule mỗi SHA-256. Mặt khác, việc triển khai phần cứng phức tạp hơn nhiều để thiết kế. Có căn cứ trung gian, ví dụ. các CPU hiện đại thường bao gồm các hướng dẫn thực hiện một số bước của thuật toán mã hóa lớn hơn, như AES-NI hoặc Tiện ích mở rộng SHA-256, với mạch chuyên dụng phù hợp trên khuôn CPU; và GPU.
Việc triển khai phần cứng thường không thể được sửa đổi trên hộp (điều đó là không thể đối với silicon). Những thay đổi trường như vậy thường dễ dàng hơn cho việc triển khai phần mềm (cho cả người dùng hợp pháp và đối thủ). Có những trường hợp ngoại lệ: nhiều FPGA có thể được lập trình lại (đôi khi theo thói quen, giống như mỗi lần thiết lập lại hệ thống); một ASIC có thể được cấu hình lại, trong giới hạn được thiết kế sẵn; phần mềm có thể được trong ROM, do đó không thay đổi.