Algoritme
Algoritme bisa diklasifikasikan berdasarkan jumlah waktu yang dibutuhkan untuk selesai dibandingkan dengan ukuran inputnya. Ada berbagai varietas: beberapa algoritme selesai dalam waktu linear relatif terhadap ukuran input, beberapa selesai dalam jumlah waktu yang eksponensial atau lebih buruh, dan beberapa berhenti. Sebagai tambahan, beberapa masalah bisa memiliki berbagai algoritme dengan kompleksitas yang berbeda, sementara permasalahan yang lain bisa saja tidak memiliki algoritme atau tidak diketahui algoritmanya yang efisien. Ada juga pemetaan dari beberapa algoritme terhadap permasalahan lain. Karena itu, lebih cocok untuk mengklasifikasikan permasalahan itu sendiri bukannya algoritme menjadi kelas-kelas yang sama berdasarkan kompleksitas dari kemungkinan algoritme terbaik baginya.
Kunci (kriptografi)
Dalam mendesain suatu sistem keamanan digital, demi keamanan harus diasumsikan bahwa para penyerang telah mengetahui algoritme yang digunakan. Hal ini disebut Prinsip Kerckhoff — ""hanya kerahasiaan kuncilah yang menjamin keamanan"". Sejarah kriptografi telah membuktikan bahwa sangat sulit untuk merahasiakan algoritme enkripsi. Hal ini disebabkan karena kebanyakan algoritme telah dikenal dan digunakan oleh banyak pihak. Sedangkan kunci lebih mudah dirahasiakan, karena berisi lebih sedikit informasi, memiliki banyak kemungkinan, dan mudah diganti, jika kunci tersebut dicurigai telah bocor. Jadi, keamanan sebuah sistem enkripsi amat tergantung pada kerahasiaan kunci yang digunakan.