Die beiden SHACAL-Varianten verwenden die Kompressionsfunktion von SHA-1 bzw. SHA-256, um eine Blockchiffre zu konstruieren. Die Kompressionsfunktion ist umkehrbar, sofern der letzte Schritt zur Addition des Initialisierungsvektors weggelassen wird.[1] Somit kann die Kompressionsfunktion zur Verschlüsselung und deren Umkehrfunktion zur Entschlüsselung verwendet werden. Die Blocklänge entspricht hierbei der Länge des erzeugten Hashwerts: 160Bit bei SHACAL-1 und 256Bit bei SHACAL-2. Der zu verschlüsselnde Klartext bzw. zu entschlüsselnde Geheimtext bildet den Initialisierungsvektor der Kompressionsfunktion.
Der Schlüssel wird anstelle des Nachrichtenblocks in die Kompressionsfunktion gegeben. Daraus ergibt sich eine Schlüssellänge von 512Bit. Die Schlüssellänge kann reduziert werden, indem die fehlenden Stellen mit Nullen bis auf 512Bit aufgefüllt werden. Schlüssellängen kürzer als 128Bit sind nicht vorgesehen.[1]
Laut den Urhebern sei die Stärke von SHACAL die Wiederverwendung von Hashfunktionen, die umfangreichen Sicherheitsanalysen unterzogen wurden.[1][2]
2003 wurde SHACAL-2 vom NESSIE-Projekt als einer ihrer 17 empfohlenen Algorithmen ausgewählt. SHACAL-1 wurde aufgrund von Sicherheitsbedenken nicht ausgewählt.[3]