#356: SmbEncrypt.java
projectforge-business/src/main/java/arlut/csd/crypto/SmbEncrypt.java Classe Java, projectforge-business/src/main/java/arlut/csd/crypto/SmbEncrypt.java 780 lignes · 452 code · 170 commentaires · 158 vides
Objectif : Fichier source : arlut/csd/crypto/SmbEncrypt.java. SmbEncrypt.java fait partie de l'application open-source de gestion de projet ProjectForge.
Source (100 premières lignes)
/*
smbencrypt.java
Créé : 15 mars 2001
Portage Java par : Jonathan Abbey, jonabbey@arlut.utexas.edu
-----------------------------------------------------------------------
Basé sur smbencrypt.c et smbdes.c de Samba
Implémentation Unix SMB/Netbios.
Version 1.9.
une implémentation partielle de DES conçue pour être utilisée dans le
protocole d'authentification SMB
Copyright (C) Andrew Tridgell 1998
Ce programme est un logiciel libre ; vous pouvez le redistribuer et/ou le modifier
selon les termes de la Licence Publique Générale GNU telle que publiée par
la Free Software Foundation ; soit la version 2 de la Licence, soit
(à votre discrétion) toute version ultérieure.
Ce programme est distribué dans l'espoir qu'il sera utile,
mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de
QUALITÉ MARCHANDE ou d'ADÉQUATION À UN USAGE PARTICULIER. Voir la
Licence Publique Générale GNU pour plus de détails.
Vous devriez avoir reçu une copie de la Licence Publique Générale GNU
avec ce programme ; sinon, écrivez à la Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA
-----------------------------------------------------------------------
Système de gestion d'annuaire Ganymede
Copyright (C) 1996-2010
L'Université du Texas à Austin
Informations de contact
Site Web : http://www.arlut.utexas.edu/gash2
Email de l'auteur : ganymede_author@arlut.utexas.edu
Liste de diffusion : ganymede@arlut.utexas.edu
Courrier postal :
Computer Science Division
Applied Research Laboratories
The University of Texas at Austin
PO Box 8029, Austin TX 78713-8029
Téléphone : (512) 835-3200
Ce programme est un logiciel libre ; vous pouvez le redistribuer et/ou le modifier
selon les termes de la Licence Publique Générale GNU telle que publiée par
la Free Software Foundation ; soit la version 2 de la Licence, soit
(à votre discrétion) toute version ultérieure.
Ce programme est distribué dans l'espoir qu'il sera utile,
mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de
QUALITÉ MARCHANDE ou d'ADÉQUATION À UN USAGE PARTICULIER. Voir la
Licence Publique Générale GNU pour plus de détails.
Vous devriez avoir reçu une copie de la Licence Publique Générale GNU
avec ce programme. Sinon, consultez <http://www.gnu.org/licenses/>.
*/
package arlut.csd.crypto;
/*------------------------------------------------------------------------------
classe
smbencrypt
------------------------------------------------------------------------------*/
import java.util.Arrays;
/**
* <p>Cette classe Java implémente les deux méthodes de hachage cryptographique utilisées
* par les clients SMB. En particulier, les méthodes statiques LANMANHash() et NTUNICODEHash()
* de cette classe effectuent les deux hachages requis pour les
* entrées de mot de passe cryptées de Samba. En tant que telle, cette classe et les autres classes
* du package largement nommé arlut.csd.crypto fournissent toutes les fonctions
* de support nécessaires pour permettre à Ganymede de gérer le fichier de mots de passe de Samba.</p>
*
* <p>Les notes suivantes proviennent du code source original de Samba pour le
* module smbdes.c, dont ce module est adapté.</p>
*
* <p>--------------------------------------------------</p>
*
* <p>Implémentation Unix SMB/Netbios.<br>
* Version 1.9.</p>
*
* <p>une implémentation partielle de DES conçue pour être utilisée dans le
* protocole d'authentification SMB</p>
Historique Git
0050a24d9 String password -> char[] password. Pas encore testé : client/maître LDAP et changement de mot de passe WLAN.
af35917ac Nettoyage de code supplémentaire
9ebb88522 Commit initial
0050a24d9
String password -> char[] password. Pas encore testé : client/maître LDAP et changement de mot de passe WLAN.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>Cette classe Java implémente les deux méthodes de hachage cryptographique utilisées
* par les clients SMB. En particulier, les méthodes statiques LANMANHash() et NTUNICODEHash()
@@ -727,17 +729,18 @@ public class SmbEncrypt {
*
* <p>Cette méthode hache les 128 premiers caractères du mot de passe,
* avec la gamme Unicode complète et la préservation de la casse.</p>
+ *
+ * Refactorisé par Kai Reinhard pour la gestion des tableaux de caractères.
+ *
+ * @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();
-
// nous devons simuler la représentation Unicode petit-boutiste de NT
// avant de la passer à md4
@@ -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
Nettoyage de code supplémentaireaf35917ac240dadd71e1121f6e1e15d29e971aa9
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