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 ME Discussion :

Faire du chiffrement RSA avec SATSA


Sujet :

Java ME

  1. #1
    Membre habitué Avatar de skip78
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 247
    Points : 133
    Points
    133
    Par défaut Faire du chiffrement RSA avec SATSA
    Salut à tous !

    Alors je plonge dans un monde assez complexe : le cryptage RSA sur mobile.
    Le fait est que j'aimerais utiliser SATSA (JSR 177) plutôt que Boucy Castle.

    Problème :
    Je coince pour l'encryptage de donnée

    Comment remplacer cette ligne de J2SE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    RSAPublicKeyImpl rsaPublicKey = new RSAPublicKeyImpl(new BigInteger(1, pubModulus), new BigInteger(1, pubExponent));
    en J2ME ?

    Par ailleurs, faut il rajouter les packages Satsa aux packages existants ?

    Merci,
    Skip

  2. #2
    Membre habitué Avatar de skip78
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 247
    Points : 133
    Points
    133
    Par défaut
    Bon en fait, plus simplement, comment fait on pour encoder la clef publique (en X509) à partir du modulo et de l'exponent ?

  3. #3
    Membre habitué Avatar de skip78
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 247
    Points : 133
    Points
    133
    Par défaut
    Bon un petit up pour modifier la donne :

    J'ai réussi à faire le cryptage RSA, mais j'ai un problème au moment du décryptage en J2SE :

    en effet, l'algo utilisé avec SATSA est unique : RSA/NONE/PKCSPADDING

    or ce dernier n'existe pas en J2SE (no provider)

    Par conséquent, comment faire ?

  4. #4
    Membre habitué Avatar de skip78
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 247
    Points : 133
    Points
    133
    Par défaut
    Juste, vous trouvez mes questions complètement sans intérêt, ou vous savez pas ?
    Je commence à me poser des questions


    Voici le post entier tel que je l'ai formulé sur un autre forum:

    Salut,

    J'ai un problème avec la JSR177.

    J'aimerais juste encrypter du Data en utilisant RSA 1136 avec la JSR177 côté client, et le decrypter avec J2SE/J2ME côté serveur.

    Le problème est qu'il semblerait que l'algo RSA par defaut est "RSA/NONE/PKCS1Padding avec SATSA (que je ne peux modifier) et que cet algo n'est pas disponible en J2SE ... (pas de provider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    java.security.NoSuchAlgorithmException: Cannot find any provider supporting RSA/NONE/PKCS1Padding
            at javax.crypto.Cipher.getInstance(DashoA13*..)
    )

    Voici l'encryption (J2ME) :

    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
     
    // Fonction de création du certificat X509 :
        public void encodeKey(){
            X509EncodedKeySpec pks = new X509EncodedKeySpec(myPublicKey);
            KeyFactory kf;
            try {
                kf = KeyFactory.getInstance("RSA");
                publicKey = kf.generatePublic(pks);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
     
        // Fonction de chiffrement RSA du tableau d'octets "data" :
        public byte[] encrypt(byte[] data){
            this.cmpt ++;
            try
            {
                // On crée le crypteur :
                Cipher cipher = Cipher.getInstance("RSA");
                cipher.init(Cipher.ENCRYPT_MODE, publicKey);
     
                // On lance l'encryption en elle même :
                byte[] ciphertext = new byte[1024];
                int len = cipher.doFinal(data, 0, data.length, ciphertext, 0);
     
                // On récupère le message encrypté et on corrige l'écart de 2 octets
                // engendré par la spec qui veut que l'on ait un multiple de 8 :
    // This is because I use a 142bytes key, while spec wants a 8 multiplicator, 
    // so I have two 0x00 padding bytes :
                byte encrypted[] = new byte[len-2];
                for(int i=0 ; i<encrypted.length ; i++){
                    encrypted[i] = ciphertext[i+2];
                }
                return encrypted;
            } catch (Exception ex) {
                ex.printStackTrace();
                return null;
            }
        }

    Et la décryption (J2SE)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    MyRSAPrivateKeyImpl rsaPrivateKey = new MyRSAPrivateKeyImpl(new BigInteger(1, pubModulus), new BigInteger(1, privD));
    private static final String RSA_ALGO = "RSA/NONE/PKCS1Padding";
     
    decoder = Cipher.getInstance(RSA_ALGO);
    		decoder.init(Cipher.DECRYPT_MODE, rsaPrivateKey);
     
    public byte[] DecryptMessage(byte[] cipherText) throws IllegalBlockSizeException, BadPaddingException {
    		return decoder.doFinal(cipherText);
    	}

    Si vous avez la MOINDRE idée, merci de poster, c'est vraiment la merde par chez moi !

    Merki,
    Skip

Discussions similaires

  1. Chiffrement RSA - Problème avec des caractères accentués
    Par HommeDeJava dans le forum Sécurité
    Réponses: 10
    Dernier message: 01/02/2012, 17h14
  2. Je suis un gros boulet ou comment faire de la 2D avec DX
    Par Freakazoid dans le forum DirectX
    Réponses: 4
    Dernier message: 19/06/2004, 15h55
  3. Peut-on faire du son juste avec du code assembleur ?
    Par Rick1602 dans le forum Assembleur
    Réponses: 7
    Dernier message: 26/03/2004, 17h39
  4. Coment faire du post-processing avec Dx9 ?
    Par rolkA dans le forum DirectX
    Réponses: 23
    Dernier message: 24/11/2003, 21h15
  5. [VB6][active x] faire du multi-thread avec vb
    Par pecheur dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/05/2003, 12h01

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