O implementare software este una care rulează pe un standard Procesor sau microprocesor, care execută în mare parte secvenţial instrucţiuni generale simple, care nu sunt dedicate criptografiei. Algoritmul criptografic este exprimat ca astfel de instrucțiuni, poate după compilare dintr-un limbaj de nivel mai puțin scăzut, cum ar fi C.
O implementare hardware rulează pe altceva. Asta ar putea fi un ASIC, an FPGA. În zilele noastre, aceasta este adesea o zonă dedicată mai mare Circuit integrat; de exemplu. un card inteligent bancar tipic include hardware dedicat pentru 3DES, AES, RSA sau și Criptografie cu curbă eliptică. În zilele noastre, algoritmul criptografic este de obicei tradus într-un design exprimat în unele Limbajul de descriere hardware precum VHDL, apoi compilat într-un design de siliciu sau configurația unui FPGA.
Implementările hardware sunt potențial ordine de mărime mai rapide și/și mai puțin consumatoare de energie decât cele software, pentru același algoritm. Un exemplu extrem în acest sens sunt minerii bitcoin, care lăuda eficiențe precum 18â 10-12A Joule pe SHA-256. Pe de altă parte, implementările hardware sunt mult mai complexe de proiectat. Există motive de mijloc, de ex. CPU-urile moderne includ adesea instrucțiuni care efectuează unele etape ale unui algoritm criptografic mai mare, cum ar fi AES-NI sau Extensii SHA-256, cu circuite dedicate potrivite pe matrița CPU; și GPU-uri.
Implementările hardware, în general, nu pot fi modificate pe teren (asta este imposibil pentru siliciu). Astfel de modificări de câmp sunt de obicei mai ușoare pentru implementările software (atât pentru utilizatorii legitimi, cât și pentru adversari). Există excepții: multe FPGA-uri pot fi reprogramate (uneori de rutină, ca la fiecare resetare a sistemului); un ASIC poate fi reconfigurabil, în limitele proiectate; software-ul poate fi în ROM, deci imuabil.