#356: SmbEncrypt.java
projectforge-business/src/main/java/arlut/csd/crypto/SmbEncrypt.java Java-Klasse, projectforge-business/src/main/java/arlut/csd/crypto/SmbEncrypt.java 780 Zeilen · 452 Code · 170 Kommentare · 158 Leerzeichen
Zweck: Quelldatei: arlut/csd/crypto/SmbEncrypt.java. SmbEncrypt.java ist Teil der Open-Source-Projektmanagementanwendung ProjectForge.
Quellcode (erste 100 Zeilen)
/*
smbencrypt.java
Erstellt: 15. März 2001
Java-Port von: Jonathan Abbey, jonabbey@arlut.utexas.edu
-----------------------------------------------------------------------
Basierend auf smbencrypt.c und smbdes.c in Samba
Unix SMB/Netbios-Implementierung.
Version 1.9.
Eine partielle Implementierung von DES, entwickelt für die Verwendung im
SMB-Authentifizierungsprotokoll
Copyright (C) Andrew Tridgell 1998
Dieses Programm ist freie Software; Sie können es unter den Bedingungen
der GNU General Public License, wie von der Free Software Foundation
veröffentlicht, weitergeben und/oder modifizieren; entweder Version 2
der Lizenz oder (nach Ihrer Wahl) jede spätere Version.
Dieses Programm wird in der Hoffnung verbreitet, dass es nützlich sein wird,
jedoch OHNE JEDE GEWÄHRLEISTUNG; sogar ohne die stillschweigende
Gewährleistung der MARKTGÄNGIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK.
Siehe die GNU General Public License für weitere Details.
Sie sollten eine Kopie der GNU General Public License zusammen mit diesem
Programm erhalten haben; wenn nicht, schreiben Sie an die Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
-----------------------------------------------------------------------
Ganymede Directory Management System
Copyright (C) 1996-2010
The University of Texas at Austin
Kontaktinformationen
Webseite: http://www.arlut.utexas.edu/gash2
Autor E-Mail: ganymede_author@arlut.utexas.edu
E-Mail-Liste: ganymede@arlut.utexas.edu
Postanschrift:
Computer Science Division
Applied Research Laboratories
The University of Texas at Austin
PO Box 8029, Austin TX 78713-8029
Telefon: (512) 835-3200
Dieses Programm ist freie Software; Sie können es unter den Bedingungen
der GNU General Public License, wie von der Free Software Foundation
veröffentlicht, weitergeben und/oder modifizieren; entweder Version 2
der Lizenz oder (nach Ihrer Wahl) jede spätere Version.
Dieses Programm wird in der Hoffnung verbreitet, dass es nützlich sein wird,
jedoch OHNE JEDE GEWÄHRLEISTUNG; sogar ohne die stillschweigende
Gewährleistung der MARKTGÄNGIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK.
Siehe die GNU General Public License für weitere Details.
Sie sollten eine Kopie der GNU General Public License zusammen mit diesem
Programm erhalten haben. Wenn nicht, siehe <http://www.gnu.org/licenses/>.
*/
package arlut.csd.crypto;
/*------------------------------------------------------------------------------
Klasse
smbencrypt
------------------------------------------------------------------------------*/
import java.util.Arrays;
/**
* <p>Diese Java-Klasse implementiert die beiden kryptografischen Hash-Methoden,
* die von SMB-Clients verwendet werden. Insbesondere führen die statischen
* Methoden LANMANHash() und NTUNICODEHash() in dieser Klasse die beiden
* Hashes durch, die für Samba's verschlüsselte Passworteinträge erforderlich
* sind. Als solche bietet diese Klasse zusammen mit den anderen Klassen im
* weit gefassten Paket arlut.csd.crypto alle notwendigen Unterstützungsfunktionen,
* um Ganymede die Verwaltung von Samba's Passwortdatei zu ermöglichen.</p>
*
* <p>Die folgenden Hinweise stammen aus dem ursprünglichen Samba-Quellcode für
* das Modul smbdes.c, von dem dieses Modul abgeleitet ist.</p>
*
* <p>--------------------------------------------------</p>
*
* <p>Unix SMB/Netbios-Implementierung.<br>
* Version 1.9.</p>
*
* <p>Eine partielle Implementierung von DES, entwickelt für die Verwendung im
* SMB-Authentifizierungsprotokoll</p>
Git-Verlauf
0050a24d9 String password -> char[] password. Noch nicht getestet: LDAP-Client/Master und Änderung des WLAN-Passworts.
af35917ac Weitere Code-Bereinigung
9ebb88522 Erster Commit
0050a24d9
String password -> char[] password. Noch nicht getestet: LDAP-Client/Master und Änderung des WLAN-Passworts.0050a24d94cf7b08c614508298c43974e84a25ac
diff --git a/projectforge-business/src/main/java/arlut/csd/crypto/SmbEncrypt.java b/projectforge-business/src/main/java/arlut/csd/crypto/SmbEncrypt.java
index c95f653ab..21aba9e57 100644
--- a/projectforge-business/src/main/java/arlut/csd/crypto/SmbEncrypt.java
+++ b/projectforge-business/src/main/java/arlut/csd/crypto/SmbEncrypt.java
@@ -78,6 +78,8 @@ package arlut.csd.crypto;
------------------------------------------------------------------------------*/
+import java.util.Arrays;
+
/**
* <p>Diese Java-Klasse implementiert die beiden kryptografischen Hash-Methoden,
* die von SMB-Clients verwendet werden. Insbesondere führen die statischen
@@ -727,17 +729,18 @@ public class SmbEncrypt {
*
* <p>Diese Methode hasht die ersten 128 Zeichen des Passworts,
* mit vollem Unicode-Bereich und Groß-/Kleinschreibungserhaltung.</p>
+ *
+ * Refactored von Kai Reinhard für die Handhabung von char-Arrays.
+ *
+ * @param c_ary
+ * @return
*/
-
- public static String NTUNICODEHash(String password)
- {
- if (password.length() > 128)
+ public static String NTUNICODEHash(char[] c_ary) {
+ if (c_ary.length > 128)
{
- password = password.substring(0, 128);
+ c_ary = Arrays.copyOfRange(c_ary, 0, 128);
}
- final char c_ary[] = password.toCharArray();
-
// wir müssen NTs Little-Endian-Unicode-Darstellung simulieren,
// bevor wir dies an md4 übergeben
@@ -771,7 +774,7 @@ public class SmbEncrypt {
}
System.err.println(LANMANHash(argv[0]));
- System.err.println(NTUNICODEHash(argv[0]));
+ System.err.println(NTUNICODEHash(argv[0].toCharArray()));
System.exit(0);
}
}
af35917ac
Weitere Code-Bereinigungaf35917ac240dadd71e1121f6e1e15d29e971aa9
diff --git a/projectforge-business/src/main/java/arlut/csd/crypto/SmbEncrypt.java b/projectforge-business/src/main/java/arlut/csd/crypto/SmbEncrypt.java
index ebb4b7f21..c95f653ab 100644
--- a/projectforge-business/src/main/java/arlut/csd/crypto/SmbEncrypt.java
+++ b/projectforge-business/src/main/java/arlut/csd/crypto/SmbEncrypt.java
@@ -277,9 +277,8 @@ public class SmbEncrypt {
out[i] = d[(i+count)%n];
}
- for (int i=0; i<n; i++)
- {
- d[i] = out[i];
+ if (n >= 0) {
+ System.arraycopy(out, 0, d, 0, n);
}
}
9ebb88522