LanManager Verschlüsselung ist der UNIX Paßwortverschlüsselung recht ähnlich. Der Server benutzt eine Datei, die einen Hashwert des Benutzerpaßwortes enthält. Dieser wird errechnet, indem das Klartextpaßwort in Großbuchstaben gewandelt wird und entweder auf 14 Byte gekürzt wird oder mit Nullen auf 14 Byte verlängert wird. Dieser 14 Byte lange Wert wird in 2 DES Schlüssel aufteilt, mit denen ein 'magischer' 8 Byte langer Wert verschüsselt wird. Die resultierenden 16 Byte werden vom Client und vom Server gespeichert. Dieser Wert ist das gehashte Paßwort.
Die Windows NT Verschüsselung ist besser. Hier wird ein MD4 Hash einer Unicode-Version des Paßwortes berechnet. Dies erzeugt ebenfalls einen 16 Byte langen Hashwert des Paßwortes.
Wenn ein Client (LanManager, Windows for Workgroups, Windows 95 oder Windows NT) ein Samba Share ansprechen möchte, oder eine andere Samba Resource nutzen möchte, wird zunächst eine Verbindung aufgebaut und das Protokoll, das Client und Server benutzen sollen, ausgehandelt. In der Antwort auf diese Anfrage schickt der Samba Server einen zufälligen, acht Byte langen String. Dieser wird als Herausforderung bezeichnet.
Jede Clientverbindung bekommt eine neue Herausforderung.
Der Client füllt das gehashte Paßwort (die 16 Byte von oben) mit 5 Nullbytes auf 21 Byte auf. Diese werden auf drei 56 Bit lange DES Schlüssel aufgeteilt. Jeder dieser Schlüssel wird benutzt, um die 8 Byte Herausforderung zu verschlüsseln. Heraus kommen 24 Byte Antwort.
Im SMB Aufruf SMBsessionsetupX (bei user level security) oder im SMBtconX (bei share level security) wird die 24 Byte lange Antwort vom Client an den Server geschickt. Beim Windows NT Protokoll wird die obige Berechnung mit beiden Hashversionen des Paßworts gemacht, und beide Antworten werden im SMB Aufruf zurückgegeben.
Der Samba Server vollzieht nun exakt die gleichen Berechnungen, mit dem bei ihm gespeicherten 16 Byte langen Hashwert des Paßwortes und mit der Herausforderung aus der Antwort auf die Protokollverhandlung. Danach überprüft er, ob die von ihm berechneten 24 Byte mit den 24 Byte vom Client übereinstimmen.
Wenn beide Werte übereinstimmen, dann hat der Client das korrekte Paßwort gewußt (oder vielmehr den 16 Byte langen Hashwert) und kann zugreifen. Wenn nicht, hat der Client das Paßwort nicht gewußt, und der Zugriff wird verweigert.
Der Samba Server kennt zu keinem Zeitpunkt das Klartextpaßwort des Benutzers. Nur der 16 Byte lange Hashwert ist ihm bekannt. Das Klartextpasswort wird nie über das Netz übertragen. Damit wird die Sicherheit erhöht.