Программная реализация — это реализация, работающая на стандартном ЦПУ или же микропроцессор, который выполняет в основном последовательно простые общие инструкции, не предназначенные для криптографии. Криптографический алгоритм выражается в виде таких инструкций, возможно, после компиляции из языка менее низкого уровня, такого как C.
Аппаратная реализация работает на чем-то другом. Это может быть ASIC, ан ПЛИС. В настоящее время это часто выделенная область более крупного Интегральная схема; например типичная банковская смарт-карта включает в себя специальное оборудование для 3DES, АЕС, ЮАР или/и Криптография на эллиптических кривых. В настоящее время криптографический алгоритм обычно переводится в схему, выраженную в некоторых Язык описания оборудования такие как VHDL, затем компилируется в кремниевый дизайн или конфигурацию FPGA.
Аппаратные реализации потенциально на несколько порядков быстрее и/или менее энергоемки, чем программные, для того же алгоритма. Крайним примером этого являются майнеры биткойнов, которые хвастаться КПД, как 18-10-12Â Джоуль согласно SHA-256. С другой стороны, аппаратные реализации намного сложнее спроектировать. Есть средние основания, например. современные процессоры часто включают в себя инструкции, которые выполняют некоторый шаг более крупного криптографического алгоритма, например АЭС-НИ или же Расширения SHA-256, с соответствующей выделенной схемой на кристалле ЦП; и графические процессоры.
Аппаратные реализации, как правило, не могут быть изменены на месте (это невозможно для кремния). Такие изменения полей обычно проще для программных реализаций (как для законных пользователей, так и для злоумышленников). Есть исключения: многие ПЛИС можно перепрограммировать (иногда рутинно, как при каждой перезагрузке системы); ASIC можно реконфигурировать в заданных пределах; программное обеспечение может быть в ПЗУ, таким образом, неизменяемый.