IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Verrouillage d'une application par une licence


Sujet :

Java

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut Verrouillage d'une application par une licence
    Bonjour à tous. J'ai developpé une application java et j'aimerais la proteger par une licence qui doit être renouvellé chaque année. Comment je peux faire cela?
    Merci d'avance.
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    En faisant en sorte que ton application ne marche qu'avec un accès Internet, et qu'elle doive se connecter à ton serveur pour marcher (et que ton serveur fasse un travail utile de sorte que modifier l'application ne permette pas de se passer du serveur.)
    Le serveur connaît donc l'ensemble des licences valides, et si une application essaie de tourner sans licence ou avec une licence invalide ou expirée, le serveur refuse de lui répondre et elle ne marche pas.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Il y a de multiples possibilités. Tout dépend du temps, de l'argent et du matériel que tu souhaites y consacrer.
    Une autre possibilité : le logiciel vérifie la date système. Si c'est plus d'un an après le début de licence, il s'arrête.
    Tu vas me dire qu'il suffit de modifier l'heure du PC pour que le logiciel fonctionne. Et c'est là que mes deux premières phrases prennent tout leur sens ;-)
    Sache seulement ceci : quelque soit la solution choisie, il y aura toujours une méthode pour contourner la licence. Elle demandera du temps et/ou de l'argent et/ou du matériel de manière plus ou moins importante, mais ce sera toujours possible.
    Tout l'exercice consiste à ce que toi, tu dépenses assez de temps/argent/matériel pour que ce ne soit pas très rentable pour le cracker et qu'il préfère acheter ta licence.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Ma méthode est certes très contraignante, mais avec elle, la seule solution de contournement est de refaire l'application soi-même au lieu de prendre une licence.
    Les autres méthodes, ce qui est gênant n'est pas que ce soit possible, mais que ce soit facile. L'élégance de Java a un prix, ce prix est qu'il est facile de modifier sa structure et de patcher les programmes faits avec. Il existe quelques systèmes visant à "protéger" des programmes Java, mais ou bien ce qu'ils protègent est sans intérêt, ou bien ils ne sont pas assez nombreux et il y a des méthodes connues pour contourner chacun d'entre eux.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Citation Envoyé par thelvin Voir le message
    En faisant en sorte que ton application ne marche qu'avec un accès Internet, et qu'elle doive se connecter à ton serveur pour marcher (et que ton serveur fasse un travail utile de sorte que modifier l'application ne permette pas de se passer du serveur.)
    Le serveur connaît donc l'ensemble des licences valides, et si une application essaie de tourner sans licence ou avec une licence invalide ou expirée, le serveur refuse de lui répondre et elle ne marche pas.
    Et si je ne veux pas utiliser de connexion internet?
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  6. #6
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    De plus c'est une application pour une entreprise et les états porte le nom de la structure. donc je veux un système juste pour la verification de la licence en fonction de la date.
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Si c'est pour un truc aussi simple que ça, c'est d'un niveau débutant. Je ne pense pas que tu trouveras une bibliothèque qui s'en occupe à ta place.
    La seule chose à décider, c'est où est enregistrée la date d'expiration de la licence. C'est une décision qui te concerne toi et que personne ne prendra à ta place.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Au bout de quelques heures de recherche j'ai entendu parlé d'un principe que je voudrais implémenter. Il est simple j'enregistre un fichier qui possède le licence qui est la concaténation d'une chaine de caractère et la date d'expiration. A chaque fois qu'un utilisateur se connecte on vérifie si la licence est toujours valide en fonction de la date courante. Le plus dur pour moi est de crypter/décrypter le fichier car pour des soucis de sécurité j'aimerais crypter le fichier avant de le stocker sur la machine serveur (machine qui contient la BD).
    J'ai fait des recherches et je suis tombé sur la classe suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    package tp;
     
    //Updates: 2004.03.23
     
    import java.math.*;
    import java.security.*;
    import java.security.spec.*;
    import java.security.interfaces.*;
     
     
    /** 
    * Cette classe propose des méthodes permettant de crypter et décrypter des 
    * messages avec l'algorithme RSA. Le message doit cependant être plus petit
    * que KEY_SIZE.
    */
    public class MyRSA {
    public final static int KEY_SIZE = 512;  // [512..2048]
     
    private RSAPublicKey publicKey;
    private RSAPrivateKey privateKey;
     
     
    public MyRSA() {
    }
     
     
    public RSAPublicKey getPublicKey() {
     return publicKey;
    }
     
     
    public byte[] getPublicKeyInBytes() {
     return publicKey.getEncoded();
    }
     
     
    public RSAPrivateKey getPrivateKey() {
     return privateKey;
    }
     
     
    public byte[] getPrivateKeyInBytes() {
     return privateKey.getEncoded();
    }  
     
     
    public void setPublicKey(RSAPublicKey publicKey) {
     this.publicKey = publicKey;
    }
     
     
    public void setPublicKey(byte[] publicKeyData) {
     try {
       X509EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(publicKeyData);
       KeyFactory keyFactory = KeyFactory.getInstance("RSA");
       publicKey = (RSAPublicKey)keyFactory.generatePublic(publicKeySpec);
     }
     catch (Exception e) {System.out.println(e);} 
    }
     
     
    public void setPrivateKey(RSAPrivateKey privateKey) {
     this.privateKey = privateKey;
    }
     
     
    public void setPrivateKey(byte[] privateKeyData) {
     try {
       PKCS8EncodedKeySpec privateKeySpec = new PKCS8EncodedKeySpec(privateKeyData);
       KeyFactory keyFactory = KeyFactory.getInstance("RSA");
       privateKey = (RSAPrivateKey)keyFactory.generatePrivate(privateKeySpec);
     }
     catch (Exception e) {System.out.println(e);} 
    }    
     
     
    public void generateKeyPair() {
     try {
       KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
       keyPairGen.initialize(KEY_SIZE, new SecureRandom());
       KeyPair kp = keyPairGen.generateKeyPair();
       publicKey = (RSAPublicKey)kp.getPublic();
       privateKey = (RSAPrivateKey)kp.getPrivate();
     }
     catch (Exception e) {System.out.println(e);} 
    }
     
     
    public byte[] crypt(byte[] plaintext) {
     return crypt(new BigInteger(addOneByte(plaintext))).toByteArray();
    }
     
     
    public byte[] crypt(String plaintext) {
     return crypt(plaintext.getBytes());
    }
     
     
    public byte[] decryptInBytes(byte[] ciphertext) {
     return removeOneByte(decrypt(new BigInteger(ciphertext)).toByteArray());
    }    
     
     
    public String decryptInString(byte[] ciphertext) {
     return new String(decryptInBytes(ciphertext));
    }
     
     
    /**
    * Cette méthode permet de tester le bon fonctionnement des autres.
    */
    public static void main(String[] args) {
     String plaintext = "toto";
     System.out.println("plaintext = " + plaintext);
     MyRSA rsa = new MyRSA();
     rsa.generateKeyPair();
     byte[] publicKey = rsa.getPublicKeyInBytes();
     byte[] privateKey = rsa.getPrivateKeyInBytes();
     byte[] ciphertext = rsa.crypt(plaintext);   
     System.out.println("ciphertext = " + new BigInteger(ciphertext));
     System.out.println("Le mot crypté est: "+ciphertext.toString());
     
     rsa.setPublicKey(publicKey);
     rsa.setPrivateKey(privateKey);    
     String plaintext2 = rsa.decryptInString(ciphertext);
     System.out.println("plaintext2 = " + plaintext2);
     
     if (!plaintext2.equals(plaintext)) System.out.println("Error: plaintext2 != plaintext");
    }
     
     
    private BigInteger crypt(BigInteger plaintext) {
     return plaintext.modPow(publicKey.getPublicExponent(), publicKey.getModulus());
    }
     
     
    private BigInteger decrypt(BigInteger ciphertext) {
     return ciphertext.modPow(privateKey.getPrivateExponent(), privateKey.getModulus());
    }            
     
     
    /**
    * Ajoute un byte de valeur 1 au début du message afin d'éviter que ce dernier
    * ne corresponde pas à un nombre négatif lorsqu'il sera transformé en
    * BigInteger.
    */
    private static byte[] addOneByte(byte[] input) {
     byte[] result = new byte[input.length+1];
     result[0] = 1;
     for (int i = 0; i < input.length; i++) {
       result[i+1] = input[i];
     }
     return result;
    }
     
     
    /**
    * Retire le byte ajouté par la méthode addOneByte.
    */
    private static byte[] removeOneByte(byte[] input) {
     byte[] result = new byte[input.length-1];
     for (int i = 0; i < result.length; i++) {
       result[i] = input[i+1];
     }
     return result;
    }
    }
    Maintenant j'aimerais savoir:
    Comment sauvegarder une clé que j'utilise pour crypter le fichier pour le décryptage lors de la connexion d'un utilisateur?
    Si le dit fichier de licence est sur le serveur, comment le lire sans utiliser le protocole ftp ou http?
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    765
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 765
    Points : 1 036
    Points
    1 036
    Par défaut
    Bonjour,

    C'est une solution qui fonctionne bien, mais qui ne résistera pas très longtemps en java.

    Comme dit plus haut, c'est une histoire de temps et d'argent pour protéger une application.

  10. #10
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par junior222 Voir le message
    Comment sauvegarder une clé que j'utilise pour crypter le fichier pour le décryptage lors de la connexion d'un utilisateur?
    Ben oui c'est un peu le problème . Tu te doutes bien qu'il a pas de solution, cache-le du mieux que tu sais le faire, et si quelqu'un veut le trouver il le trouvera, c'est tout...

    Citation Envoyé par junior222 Voir le message
    Si le dit fichier de licence est sur le serveur, comment le lire sans utiliser le protocole ftp ou http?
    Humm, scp ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    765
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 765
    Points : 1 036
    Points
    1 036
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Ben oui c'est un peu le problème . Tu te doutes bien qu'il a pas de solution, cache-le du mieux que tu sais le faire, et si quelqu'un veut le trouver il le trouvera, c'est tout...
    Surtout que la plupart du temps il suffira de faire sauter le code qui sert à la vérification, donc même pas besoin de chercher le fichier.

  12. #12
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Jimmy_ Voir le message
    Surtout que la plupart du temps il suffira de faire sauter le code qui sert à la vérification, donc même pas besoin de chercher le fichier.
    C'est clair... et tellement facile
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Quelle solution me proposez-vous donc?
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  14. #14
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par junior222 Voir le message
    Quelle solution me proposez-vous donc?
    Mais elle est très bien cette solution, si tu en es content. Elle est facile à contourner parce que ce sera toujours facile à contourner, c'est tout.

    Si tu veux pas que ça le soit, je t'ai déjà dit comment faire. Tu veux pas de connexion Internet eh ben t'en auras une quand même. (Alternative : fournir une boîte USB avec chaque licence. Cette boîte contient une copie de la licence et communique avec l'appli pour vérifier qu'elle est valide, et s'occupe de faire un travail important que l'appli ne fait pas. Bref elle remplace un serveur sur Internet. C'est cher et contraignant mais ça marche.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  15. #15
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Pourquoi serait-elle facile à contourner? J'aimerais tout de même continuer avec mon approche pouvez-vous m'aider?
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  16. #16
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    765
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 765
    Points : 1 036
    Points
    1 036
    Par défaut
    Car il suffit en java de contourner ta classe de vérification.

    La conception d'une solution de licence efficace requière comme expliqué du temps et donc de l'argent.
    Ce n'est pas le but du forum de fournir des solutions toutes faites.

    Moi je te conseil plutôt de multiplier les vérifications partout dans ton code de manière différente et d'obfusquer un minimum.
    Ca rendra le boulot plus long et donc moins intéressant pour un attaquant.

  17. #17
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par Jimmy_ Voir le message
    La conception d'une solution de licence efficace requière comme expliqué du temps et donc de l'argent.
    En l'occurrence, le problème est plutôt que les seules solutions qui auraient un peu d'efficacité, dénatureraient tellement l'architecture Java que ça n'aurait plus aucun intérêt d'avoir programmé l'appli en Java.
    À ce niveau-là il vaut mieux programmer en C++. Il n'y a pas d'introspection, l'architecture cible est un processeur x86 abominablement sale, et déplomber ça commence à demander un certain niveau de talent.

    Citation Envoyé par Jimmy_ Voir le message
    Ce n'est pas le but du forum de fournir des solutions toutes faites.
    En l'occurrence on en aurait de toute façon pas à donner...

    On va pas prendre ses décisions à sa place : où faut-il planquer la clé ? Mais on en a aucune idée mon grand, où tu veux et peux !
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  18. #18
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Citation Envoyé par thelvin Voir le message
    En l'occurrence, le problème est plutôt que les seules solutions qui auraient un peu d'efficacité, dénatureraient tellement l'architecture Java que ça n'aurait plus aucun intérêt d'avoir programmé l'appli en Java.
    À ce niveau-là il vaut mieux programmer en C++. Il n'y a pas d'introspection, l'architecture cible est un processeur x86 abominablement sale, et déplomber ça commence à demander un certain niveau de talent.



    En l'occurrence on en aurait de toute façon pas à donner...

    On va pas prendre ses décisions à sa place : où faut-il planquer la clé ? Mais on en a aucune idée mon grand, où tu veux et peux !
    Ok je comprends bien mais mon problème c'est avec le code. Comment stocker la clé car c'est une suite de byte et comment récupérer après?
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  19. #19
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Citation Envoyé par Jimmy_ Voir le message
    Car il suffit en java de contourner ta classe de vérification.

    La conception d'une solution de licence efficace requière comme expliqué du temps et donc de l'argent.
    Ce n'est pas le but du forum de fournir des solutions toutes faites.

    Moi je te conseil plutôt de multiplier les vérifications partout dans ton code de manière différente et d'obfusquer un minimum.
    Ca rendra le boulot plus long et donc moins intéressant pour un attaquant.
    Je ne comprends pas bien quand tu me demande de vérifier de manière moi je pensais que je devais juste lire la clé, décrypter le fichier et lire les données en faisant des tests pour savoir si la licence est valide. De plus comment je fait pour crypter le fichier je dois d'abord le lire dans une variable(String) avant de crypter?
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  20. #20
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par junior222 Voir le message
    Comment stocker la clé car c'est une suite de byte et comment récupérer après?
    Cela dépend entièrement de où tu veux la stocker, bien sûr -_-°.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. [XL-2007] Lancement d'une application par une macro vba
    Par rijks dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/12/2014, 09h12
  2. Réponses: 4
    Dernier message: 31/10/2007, 20h27
  3. masquer une partie d'une vidéo par une banniere
    Par lezabour dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 16/10/2006, 16h47
  4. Réponses: 11
    Dernier message: 05/10/2006, 13h20
  5. [c#] Envoyer une capture d'une application par mail
    Par nesquik dans le forum Windows Forms
    Réponses: 1
    Dernier message: 04/07/2006, 17h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo