Aș spune că acesta este parțial cazul. Din cauza rundelor, chiar și o singură operațiune de bloc va fi operată folosind de mai multe ori. De asemenea, un bloc nu primește nicio intrare specială: aveți un bloc care este mapat la un bloc de ieșire.
Cu toate acestea, aceasta nu este povestea completă. În primul rând, unele dintre calculele din runde pot necesita ceva mai multă magie decât de obicei. Dacă există cazuri marginale posibile, atunci acestea nu pot fi declanșate de o singură operațiune de bloc. Pe cele pe care ar trebui să le testați separat.
Mai important: în timp ce cele de mai sus testează operațiunea de blocare, nu testează operațiunea de streaming. Acest lucru este mult mai probabil să provoace probleme. Problema este că codificarea/decodificarea (de exemplu, octeți în cuvinte) și tamponarea sunt mai puțin triviale decât se așteaptă mulți. Deci, este logic să testați toate tipurile de dimensiuni de text simplu, de exemplu, și să vă asigurați că Actualizați
funcțiile funcționează corect. Acest lucru nu este atât de diferit de testarea funcțiilor non-criptografice; te-ai aștepta la aceleași probleme cu operațiunile de codificare/decodare și I/O, de exemplu.
O problemă pe care am văzut-o de multe ori este că echipele de testare ignoră implementarea în sine. Este bine să testați conform specificațiilor oficiale de testare, dar dacă există alegeri specifice de proiectare pentru implementare, atunci acestea ar trebui testate și ele. De exemplu: s-ar putea ca o implementare să aibă un buffer overflow, chiar dacă toate testele oficiale rulează fără incidente. Nu voi repeta nicio poveste de groază aici, dar da...
În cele din urmă, deoarece acesta este un site de criptografie: dacă faceți vreo pretenție cu privire la protecția împotriva atacurilor pe canale secundare, atunci probabil că ar trebui să le testați și pe acestea. Desigur, ești oarecum norocos aici, deoarece Bernstein presupune în general acest tip de atacuri atunci când proiectează un cifr - dar implementările pot fi totuși vulnerabile.
Acestea fiind spuse, nu strică niciodată să rulezi implementarea pe un set mai extins. Doar luați orice bibliotecă existentă (sau două independente) și generați singur un set mare de vectori. Din nou, concentrați-vă pe cazurile marginale; nici să faci un pic de testare neclară nu strica niciodată.