Accueil > > > CRYPTAGE AES128/192/256 EN JAVA AVEC BOUNCY CASTLE
CRYPTAGE AES128/192/256 EN JAVA AVEC BOUNCY CASTLE
Information sur la source
Description
salut a tous voila un petit code comme l'a demandé Moucave , il crypte une String avec AES (cle 128 ou 192 ou 256) avec bouncycastle.pour les cles 192 et 256 il faut aussi ajouter l'extension de JCE security (disponible sur java.sun) ce programme fonctionne parfaitement ( les resultat sont visible dans les fichiers de sauvegarde) on doit transformer la chaine en byte[] pour pouvoir chiffrer et dechiffrer et recuperer a la sortie des byte[] aussi mais je n'ai pas encore trouver le moyen de transformer les resultat (byte[]) en String. (la fonction toString() ne donne pas le resultat souhaité)
Source
- /*
- * ChiffSym.java
- *
- * Created on 9 juin 2006, 05:51
- *
- * To change this template, choose Tools | Template Manager
- * and open the template in the editor.
- */
- /**
- /**
- *
- * @author xheo
- */
-
- import java.io.*;
- import javax.crypto.SecretKey;
- import javax.crypto.Cipher;
- import javax.crypto.spec.IvParameterSpec;
- import javax.crypto.spec.SecretKeySpec;
- import java.security.*;
- import java.util.*;
- import javax.crypto.*;
- import org.bouncycastle.jce.provider.BouncyCastleProvider;
- import java.security.SecureRandom;
- import javax.crypto.KeyGenerator;
- public class ChiffSym {
-
- /** Creates a new instance of ChiffSym */
- public ChiffSym()
- {
- }
- public static void main(String[] args) {
- SecretKey cle=null;
- int taille= 128; // ou 192 ou 256
- String chaine= "chaine a chiffrer";
- cle=genererCleAES(taille);
- chiffrement_sym(chaine,cle);
- }
- public static void chiffrement_sym(String entree ,SecretKey cle_aes)
- {
- try {
-
-
- byte[] buffer = entree.getBytes();
- System.out.println("chiffrement de :"+buffer );
- // CHoix de l'iv
- byte[] iv = {
- (byte) 0xc9, (byte) 0x36,(byte) 0xea,(byte) 0x78,
- (byte) 0xd9, (byte) 0x36,(byte) 0x99,(byte) 0x3e,
- (byte) 0x36, (byte) 0x78,(byte) 0x52,(byte) 0x78,
- (byte) 0x3e, (byte) 0xea,(byte) 0x3e,(byte) 0xf2, };
- IvParameterSpec salt = new IvParameterSpec(iv);
- // ajout du provider BC
- Security.addProvider(new BouncyCastleProvider());
- SecureRandom sec_rand = SecureRandom.getInstance("SHA1PRNG","SUN");
-
- // Chiffrement de la chaine
- Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding", "BC");
- c.init(Cipher.ENCRYPT_MODE, cle_aes, salt);
- byte[] buf_crypt = c.doFinal(buffer);
- System.out.println("resultat"+buf_crypt.toString());
- // sauvegarde ds un fichier
- FileOutputStream envfos = new FileOutputStream("chaine_chiffree");
- envfos.write(buf_crypt);
- envfos.close();
-
- // Déchiffrement de le chaine
- System.out.println("dechiffrement");
- c = Cipher.getInstance("AES/CBC/PKCS5Padding", "BC");
- c.init(Cipher.DECRYPT_MODE, cle_aes, salt);
- byte[] buf_decrypt = c.doFinal(buf_crypt);
- char[] sortie= new char[(int)buf_decrypt.length];
- DataInputStream instream=null;
- System.out.println(buf_decrypt.toString());
- // sauvegarde ds un fichier
- envfos = new FileOutputStream("fichier_dechiffre");
- envfos.write(buf_decrypt);
- envfos.close();
-
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public static SecretKey genererCleAES(int key_len)
- {
- try
- {
- // CHoix du vecteur initial (mode CBC)
- byte[] iv = {
- (byte) 0xc9, (byte) 0x36,(byte) 0xea,(byte) 0x78,
- (byte) 0xd9, (byte) 0x36,(byte) 0x99,(byte) 0x3e,
- (byte) 0x36, (byte) 0x78,(byte) 0x52,(byte) 0x78,
- (byte) 0x3e, (byte) 0xea,(byte) 0x3e,(byte) 0xf2, };
- IvParameterSpec salt = new IvParameterSpec(iv);
- // ajout du provider BC
- Security.addProvider(new BouncyCastleProvider());
- //generation de la clé
- SecureRandom sec_rand = SecureRandom.getInstance("SHA1PRNG","SUN");
- System.out.println("Generation de cle AES de "+key_len+" bits");
- KeyGenerator key_gen = KeyGenerator.getInstance("AES","BC"); // instance du generateur AES.
- key_gen.init(key_len,sec_rand); // Configurer avec les bits de "key_size" en utilisant "sec-rand" salted PRNG.
- SecretKey cle_aes = key_gen.generateKey(); //Generer la cle
- return(cle_aes);
- }
- catch (Exception e)
- {
- e.printStackTrace();
- return null;
- }
- }
- }
/*
* ChiffSym.java
*
* Created on 9 juin 2006, 05:51
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
/**
/**
*
* @author xheo
*/
import java.io.*;
import javax.crypto.SecretKey;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.*;
import java.util.*;
import javax.crypto.*;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import java.security.SecureRandom;
import javax.crypto.KeyGenerator;
public class ChiffSym {
/** Creates a new instance of ChiffSym */
public ChiffSym()
{
}
public static void main(String[] args) {
SecretKey cle=null;
int taille= 128; // ou 192 ou 256
String chaine= "chaine a chiffrer";
cle=genererCleAES(taille);
chiffrement_sym(chaine,cle);
}
public static void chiffrement_sym(String entree ,SecretKey cle_aes)
{
try {
byte[] buffer = entree.getBytes();
System.out.println("chiffrement de :"+buffer );
// CHoix de l'iv
byte[] iv = {
(byte) 0xc9, (byte) 0x36,(byte) 0xea,(byte) 0x78,
(byte) 0xd9, (byte) 0x36,(byte) 0x99,(byte) 0x3e,
(byte) 0x36, (byte) 0x78,(byte) 0x52,(byte) 0x78,
(byte) 0x3e, (byte) 0xea,(byte) 0x3e,(byte) 0xf2, };
IvParameterSpec salt = new IvParameterSpec(iv);
// ajout du provider BC
Security.addProvider(new BouncyCastleProvider());
SecureRandom sec_rand = SecureRandom.getInstance("SHA1PRNG","SUN");
// Chiffrement de la chaine
Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding", "BC");
c.init(Cipher.ENCRYPT_MODE, cle_aes, salt);
byte[] buf_crypt = c.doFinal(buffer);
System.out.println("resultat"+buf_crypt.toString());
// sauvegarde ds un fichier
FileOutputStream envfos = new FileOutputStream("chaine_chiffree");
envfos.write(buf_crypt);
envfos.close();
// Déchiffrement de le chaine
System.out.println("dechiffrement");
c = Cipher.getInstance("AES/CBC/PKCS5Padding", "BC");
c.init(Cipher.DECRYPT_MODE, cle_aes, salt);
byte[] buf_decrypt = c.doFinal(buf_crypt);
char[] sortie= new char[(int)buf_decrypt.length];
DataInputStream instream=null;
System.out.println(buf_decrypt.toString());
// sauvegarde ds un fichier
envfos = new FileOutputStream("fichier_dechiffre");
envfos.write(buf_decrypt);
envfos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static SecretKey genererCleAES(int key_len)
{
try
{
// CHoix du vecteur initial (mode CBC)
byte[] iv = {
(byte) 0xc9, (byte) 0x36,(byte) 0xea,(byte) 0x78,
(byte) 0xd9, (byte) 0x36,(byte) 0x99,(byte) 0x3e,
(byte) 0x36, (byte) 0x78,(byte) 0x52,(byte) 0x78,
(byte) 0x3e, (byte) 0xea,(byte) 0x3e,(byte) 0xf2, };
IvParameterSpec salt = new IvParameterSpec(iv);
// ajout du provider BC
Security.addProvider(new BouncyCastleProvider());
//generation de la clé
SecureRandom sec_rand = SecureRandom.getInstance("SHA1PRNG","SUN");
System.out.println("Generation de cle AES de "+key_len+" bits");
KeyGenerator key_gen = KeyGenerator.getInstance("AES","BC"); // instance du generateur AES.
key_gen.init(key_len,sec_rand); // Configurer avec les bits de "key_size" en utilisant "sec-rand" salted PRNG.
SecretKey cle_aes = key_gen.generateKey(); //Generer la cle
return(cle_aes);
}
catch (Exception e)
{
e.printStackTrace();
return null;
}
}
}
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Probleme de securite avec les applets... [ par xlunar ]
Bonjour,Je développe une applet client chat.Si l'IP du serveur chat est différente de l'IP du serveur web, j'ai une erreur du type access denied....Ca
[cryptage] Fusionner un code RSA et un reso TCP [ par ckiki93 ]
[cryptage] Fusionner un code RSA et un reso TCP [ par ckiki93 ]
Dsl pour le post Vide precedent....1-Les codes sources sont Correct. mon probleme ? 2-je voudrais réaliser le cryptage sur un reseau TCP Serveur Clien
Cryptage simple d'une chaine de caracteres [ par fllacer ]
Bonjour,je cherche comment crypter simplement une String en Java et la décrypter.ex : String aCrypter = "password";String crypt = cryptage ("pass
Cryptage DES en UNICODE [ par neena ]
Je vous explique mon gros probleme : jai un prog qui crypte un mot de passe en DES (ça marche) mais le pb cest que les charactéres qu'il me
Enlever avertissement de securite [ par ViviaN_sAMurAI ]
Bonjour, Je souhaiterai savoir comment enlever l'avertissement de sécurité que demande l'applet java (coolsmile)... ViviaN
Urgent problème pour un logiciel de cryptage à algorythme novelle génération invilable [ par lulu42 ]
Bonjour.J'aimerais savaoir coment je peux convertir un integer (dont la valeur ne dépasse pas 255, je voudrais donc ignorer l'octet de poids
cryptage [ par progrima ]
Bonjour à tous!! Je veux réaliser une application qui fait le cryptage des fichiers, sur internet j'ai trouvé plusieurs type de cryptage, mais c'est q
cryptage et decryptage [ par thrmgs ]
Bonjour a tousje suis debutant en java script.je cherche a creer 2 fenetre ,l une qui permet de crypter le message grace a RSA et l a
L'API Jce de Cryptage de Java [ par mrabti_idriss ]
Bonjour je suis un debutant dans la cryptographie en utilisant l'api Java JCE, est ce que quelqu'un pourrait me donner un lien où trouver un peu
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|