Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CODE PERMETTANT DE CRYPTER, DÉCRYPTER ET DE "BRUTEFORCER" AVEC L'ALGO DES ET 3DES


Information sur la source

Catégorie :Divers Niveau : Initié Date de création : 25/12/2003 Vu : 6 490

Note :
7,75 / 10 - par 4 personnes
7,75 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

Description

Cette page permet de crypter et de décrypter des mots de passe codés avec DES ou 3DES.
Un bouton permet aussi de retrouver les mots de passe clairs en mode bruteforce (sans clé de cryptage), à condition que la longueur de clé d'origine soit petite (4 caractères maxi)


vous pouvez accéder à la page en question directement à l'adresse suivante: http://82.224.14.14/divers/des.html
 

Source

  • <HTML>
  • <HEAD><TITLE>Cryptage DES </TITLE><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></HEAD>
  • <BODY bgcolor="#CCCCFF" >
  • <p align="center"><strong><font color="#224242">Cryptage DES</font></strong></p>
  • <SCRIPT language="Javascript">
  • <!--
  • function des (key, message, encrypt, mode, iv) {
  • var spfunction1 = new Array (0x1010400,0,0x10000,0x1010404,0x1010004,0x10404,0x4,0x10000,0x400,0x1010400,0x1010404,0x400,0x1000404,0x1010004,0x1000000,0x4,0x404,0x1000400,0x1000400,0x10400,0x10400,0x1010000,0x1010000,0x1000404,0x10004,0x1000004,0x1000004,0x10004,0,0x404,0x10404,0x1000000,0x10000,0x1010404,0x4,0x1010000,0x1010400,0x1000000,0x1000000,0x400,0x1010004,0x10000,0x10400,0x1000004,0x400,0x4,0x1000404,0x10404,0x1010404,0x10004,0x1010000,0x1000404,0x1000004,0x404,0x10404,0x1010400,0x404,0x1000400,0x1000400,0,0x10004,0x10400,0,0x1010004);
  • var spfunction2 = new Array (0x80108020,0x80008000,0x8000,0x108020,0x100000,0x20,0x80100020,0x80008020,0x80000020,0x80108020,0x80108000,0x80000000,0x80008000,0x100000,0x20,0x80100020,0x108000,0x100020,0x80008020,0,0x80000000,0x8000,0x108020,0x80100000,0x100020,0x80000020,0,0x108000,0x8020,0x80108000,0x80100000,0x8020,0,0x108020,0x80100020,0x100000,0x80008020,0x80100000,0x80108000,0x8000,0x80100000,0x80008000,0x20,0x80108020,0x108020,0x20,0x8000,0x80000000,0x8020,0x80108000,0x100000,0x80000020,0x100020,0x80008020,0x80000020,0x100020,0x108000,0,0x80008000,0x8020,0x80000000,0x80100020,0x80108020,0x108000);
  • var spfunction3 = new Array (0x208,0x8020200,0,0x8020008,0x8000200,0,0x20208,0x8000200,0x20008,0x8000008,0x8000008,0x20000,0x8020208,0x20008,0x8020000,0x208,0x8000000,0x8,0x8020200,0x200,0x20200,0x8020000,0x8020008,0x20208,0x8000208,0x20200,0x20000,0x8000208,0x8,0x8020208,0x200,0x8000000,0x8020200,0x8000000,0x20008,0x208,0x20000,0x8020200,0x8000200,0,0x200,0x20008,0x8020208,0x8000200,0x8000008,0x200,0,0x8020008,0x8000208,0x20000,0x8000000,0x8020208,0x8,0x20208,0x20200,0x8000008,0x8020000,0x8000208,0x208,0x8020000,0x20208,0x8,0x8020008,0x20200);
  • var spfunction4 = new Array (0x802001,0x2081,0x2081,0x80,0x802080,0x800081,0x800001,0x2001,0,0x802000,0x802000,0x802081,0x81,0,0x800080,0x800001,0x1,0x2000,0x800000,0x802001,0x80,0x800000,0x2001,0x2080,0x800081,0x1,0x2080,0x800080,0x2000,0x802080,0x802081,0x81,0x800080,0x800001,0x802000,0x802081,0x81,0,0,0x802000,0x2080,0x800080,0x800081,0x1,0x802001,0x2081,0x2081,0x80,0x802081,0x81,0x1,0x2000,0x800001,0x2001,0x802080,0x800081,0x2001,0x2080,0x800000,0x802001,0x80,0x800000,0x2000,0x802080);
  • var spfunction5 = new Array (0x100,0x2080100,0x2080000,0x42000100,0x80000,0x100,0x40000000,0x2080000,0x40080100,0x80000,0x2000100,0x40080100,0x42000100,0x42080000,0x80100,0x40000000,0x2000000,0x40080000,0x40080000,0,0x40000100,0x42080100,0x42080100,0x2000100,0x42080000,0x40000100,0,0x42000000,0x2080100,0x2000000,0x42000000,0x80100,0x80000,0x42000100,0x100,0x2000000,0x40000000,0x2080000,0x42000100,0x40080100,0x2000100,0x40000000,0x42080000,0x2080100,0x40080100,0x100,0x2000000,0x42080000,0x42080100,0x80100,0x42000000,0x42080100,0x2080000,0,0x40080000,0x42000000,0x80100,0x2000100,0x40000100,0x80000,0,0x40080000,0x2080100,0x40000100);
  • var spfunction6 = new Array (0x20000010,0x20400000,0x4000,0x20404010,0x20400000,0x10,0x20404010,0x400000,0x20004000,0x404010,0x400000,0x20000010,0x400010,0x20004000,0x20000000,0x4010,0,0x400010,0x20004010,0x4000,0x404000,0x20004010,0x10,0x20400010,0x20400010,0,0x404010,0x20404000,0x4010,0x404000,0x20404000,0x20000000,0x20004000,0x10,0x20400010,0x404000,0x20404010,0x400000,0x4010,0x20000010,0x400000,0x20004000,0x20000000,0x4010,0x20000010,0x20404010,0x404000,0x20400000,0x404010,0x20404000,0,0x20400010,0x10,0x4000,0x20400000,0x404010,0x4000,0x400010,0x20004010,0,0x20404000,0x20000000,0x400010,0x20004010);
  • var spfunction7 = new Array (0x200000,0x4200002,0x4000802,0,0x800,0x4000802,0x200802,0x4200800,0x4200802,0x200000,0,0x4000002,0x2,0x4000000,0x4200002,0x802,0x4000800,0x200802,0x200002,0x4000800,0x4000002,0x4200000,0x4200800,0x200002,0x4200000,0x800,0x802,0x4200802,0x200800,0x2,0x4000000,0x200800,0x4000000,0x200800,0x200000,0x4000802,0x4000802,0x4200002,0x4200002,0x2,0x200002,0x4000000,0x4000800,0x200000,0x4200800,0x802,0x200802,0x4200800,0x802,0x4000002,0x4200802,0x4200000,0x200800,0,0x2,0x4200802,0,0x200802,0x4200000,0x800,0x4000002,0x4000800,0x800,0x200002);
  • var spfunction8 = new Array (0x10001040,0x1000,0x40000,0x10041040,0x10000000,0x10001040,0x40,0x10000000,0x40040,0x10040000,0x10041040,0x41000,0x10041000,0x41040,0x1000,0x40,0x10040000,0x10000040,0x10001000,0x1040,0x41000,0x40040,0x10040040,0x10041000,0x1040,0,0,0x10040040,0x10000040,0x10001000,0x41040,0x40000,0x41040,0x40000,0x10041000,0x1000,0x40,0x10040040,0x1000,0x41040,0x10001000,0x40,0x10000040,0x10040000,0x10040040,0x10000000,0x40000,0x10001040,0,0x10041040,0x40040,0x10000040,0x10040000,0x10001000,0x10001040,0,0x10041040,0x41000,0x41000,0x1040,0x1040,0x40040,0x10000000,0x10041000);
  • var keys = des_createKeys (key);
  • var m=0, i, j, temp, temp2, right1, right2, left, right, looping;
  • var cbcleft, cbcleft2, cbcright, cbcright2
  • var endloop, loopinc;
  • var len = message.length;
  • var chunk = 0;
  • var iterations = keys.length == 32 ? 3 : 9;
  • if (iterations == 3) {looping = encrypt ? new Array (0, 32, 2) : new Array (30, -2, -2);}
  • else {looping = encrypt ? new Array (0, 32, 2, 62, 30, -2, 64, 96, 2) : new Array (94, 62, -2, 32, 64, 2, 30, -2, -2);}
  • message += "\0\0\0\0\0\0\0\0";
  • result = "";
  • tempresult = "";
  • if (mode == 1) {
  • cbcleft = (iv.charCodeAt(m++) << 24) | (iv.charCodeAt(m++) << 16) | (iv.charCodeAt(m++) << 8) | iv.charCodeAt(m++);
  • cbcright = (iv.charCodeAt(m++) << 24) | (iv.charCodeAt(m++) << 16) | (iv.charCodeAt(m++) << 8) | iv.charCodeAt(m++);
  • m=0;
  • }
  • while (m < len) {
  • left = (message.charCodeAt(m++) << 24) | (message.charCodeAt(m++) << 16) | (message.charCodeAt(m++) << 8) | message.charCodeAt(m++);
  • right = (message.charCodeAt(m++) << 24) | (message.charCodeAt(m++) << 16) | (message.charCodeAt(m++) << 8) | message.charCodeAt(m++);
  • if (mode == 1) {if (encrypt) {left ^= cbcleft; right ^= cbcright;} else {cbcleft2 = cbcleft; cbcright2 = cbcright; cbcleft = left; cbcright = right;}}
  • temp = ((left >>> 4) ^ right) & 0x0f0f0f0f; right ^= temp; left ^= (temp << 4);
  • temp = ((left >>> 16) ^ right) & 0x0000ffff; right ^= temp; left ^= (temp << 16);
  • temp = ((right >>> 2) ^ left) & 0x33333333; left ^= temp; right ^= (temp << 2);
  • temp = ((right >>> 8) ^ left) & 0x00ff00ff; left ^= temp; right ^= (temp << 8);
  • temp = ((left >>> 1) ^ right) & 0x55555555; right ^= temp; left ^= (temp << 1);
  • left = ((left << 1) | (left >>> 31));
  • right = ((right << 1) | (right >>> 31));
  • for (j=0; j<iterations; j+=3) {
  • endloop = looping[j+1];
  • loopinc = looping[j+2];
  • for (i=looping[j]; i!=endloop; i+=loopinc) {
  • right1 = right ^ keys[i];
  • right2 = ((right >>> 4) | (right << 28)) ^ keys[i+1];
  • temp = left;
  • left = right;
  • right = temp ^ (spfunction2[(right1 >>> 24) & 0x3f] | spfunction4[(right1 >>> 16) & 0x3f]
  • | spfunction6[(right1 >>> 8) & 0x3f] | spfunction8[right1 & 0x3f]
  • | spfunction1[(right2 >>> 24) & 0x3f] | spfunction3[(right2 >>> 16) & 0x3f]
  • | spfunction5[(right2 >>> 8) & 0x3f] | spfunction7[right2 & 0x3f]);
  • }
  • temp = left; left = right; right = temp;
  • }
  • left = ((left >>> 1) | (left << 31));
  • right = ((right >>> 1) | (right << 31));
  • temp = ((left >>> 1) ^ right) & 0x55555555; right ^= temp; left ^= (temp << 1);
  • temp = ((right >>> 8) ^ left) & 0x00ff00ff; left ^= temp; right ^= (temp << 8);
  • temp = ((right >>> 2) ^ left) & 0x33333333; left ^= temp; right ^= (temp << 2);
  • temp = ((left >>> 16) ^ right) & 0x0000ffff; right ^= temp; left ^= (temp << 16);
  • temp = ((left >>> 4) ^ right) & 0x0f0f0f0f; right ^= temp; left ^= (temp << 4);
  • if (mode == 1) {if (encrypt) {cbcleft = left; cbcright = right;} else {left ^= cbcleft2; right ^= cbcright2;}}
  • tempresult += String.fromCharCode ((left>>>24), ((left>>>16) & 0xff), ((left>>>8) & 0xff), (left & 0xff), (right>>>24), ((right>>>16) & 0xff), ((right>>>8) & 0xff), (right & 0xff));
  • chunk += 8;
  • if (chunk == 512) {result += tempresult; tempresult = ""; chunk = 0;}
  • }
  • return result + tempresult;
  • }
  • function des_createKeys (key) {
  • pc2bytes0 = new Array (0,0x4,0x20000000,0x20000004,0x10000,0x10004,0x20010000,0x20010004,0x200,0x204,0x20000200,0x20000204,0x10200,0x10204,0x20010200,0x20010204);
  • pc2bytes1 = new Array (0,0x1,0x100000,0x100001,0x4000000,0x4000001,0x4100000,0x4100001,0x100,0x101,0x100100,0x100101,0x4000100,0x4000101,0x4100100,0x4100101);
  • pc2bytes2 = new Array (0,0x8,0x800,0x808,0x1000000,0x1000008,0x1000800,0x1000808,0,0x8,0x800,0x808,0x1000000,0x1000008,0x1000800,0x1000808);
  • pc2bytes3 = new Array (0,0x200000,0x8000000,0x8200000,0x2000,0x202000,0x8002000,0x8202000,0x20000,0x220000,0x8020000,0x8220000,0x22000,0x222000,0x8022000,0x8222000);
  • pc2bytes4 = new Array (0,0x40000,0x10,0x40010,0,0x40000,0x10,0x40010,0x1000,0x41000,0x1010,0x41010,0x1000,0x41000,0x1010,0x41010);
  • pc2bytes5 = new Array (0,0x400,0x20,0x420,0,0x400,0x20,0x420,0x2000000,0x2000400,0x2000020,0x2000420,0x2000000,0x2000400,0x2000020,0x2000420);
  • pc2bytes6 = new Array (0,0x10000000,0x80000,0x10080000,0x2,0x10000002,0x80002,0x10080002,0,0x10000000,0x80000,0x10080000,0x2,0x10000002,0x80002,0x10080002);
  • pc2bytes7 = new Array (0,0x10000,0x800,0x10800,0x20000000,0x20010000,0x20000800,0x20010800,0x20000,0x30000,0x20800,0x30800,0x20020000,0x20030000,0x20020800,0x20030800);
  • pc2bytes8 = new Array (0,0x40000,0,0x40000,0x2,0x40002,0x2,0x40002,0x2000000,0x2040000,0x2000000,0x2040000,0x2000002,0x2040002,0x2000002,0x2040002);
  • pc2bytes9 = new Array (0,0x10000000,0x8,0x10000008,0,0x10000000,0x8,0x10000008,0x400,0x10000400,0x408,0x10000408,0x400,0x10000400,0x408,0x10000408);
  • pc2bytes10 = new Array (0,0x20,0,0x20,0x100000,0x100020,0x100000,0x100020,0x2000,0x2020,0x2000,0x2020,0x102000,0x102020,0x102000,0x102020);
  • pc2bytes11 = new Array (0,0x1000000,0x200,0x1000200,0x200000,0x1200000,0x200200,0x1200200,0x4000000,0x5000000,0x4000200,0x5000200,0x4200000,0x5200000,0x4200200,0x5200200);
  • pc2bytes12 = new Array (0,0x1000,0x8000000,0x8001000,0x80000,0x81000,0x8080000,0x8081000,0x10,0x1010,0x8000010,0x8001010,0x80010,0x81010,0x8080010,0x8081010);
  • pc2bytes13 = new Array (0,0x4,0x100,0x104,0,0x4,0x100,0x104,0x1,0x5,0x101,0x105,0x1,0x5,0x101,0x105);
  • var iterations = key.length >= 24 ? 3 : 1;
  • var keys = new Array (32 * iterations);
  • var shifts = new Array (0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0);
  • var lefttemp, righttemp, m=0, n=0, temp;
  • for (var j=0; j<iterations; j++) { //either 1 or 3 iterations
  • left = (key.charCodeAt(m++) << 24) | (key.charCodeAt(m++) << 16) | (key.charCodeAt(m++) << 8) | key.charCodeAt(m++);
  • right = (key.charCodeAt(m++) << 24) | (key.charCodeAt(m++) << 16) | (key.charCodeAt(m++) << 8) | key.charCodeAt(m++);
  • temp = ((left >>> 4) ^ right) & 0x0f0f0f0f; right ^= temp; left ^= (temp << 4);
  • temp = ((right >>> -16) ^ left) & 0x0000ffff; left ^= temp; right ^= (temp << -16);
  • temp = ((left >>> 2) ^ right) & 0x33333333; right ^= temp; left ^= (temp << 2);
  • temp = ((right >>> -16) ^ left) & 0x0000ffff; left ^= temp; right ^= (temp << -16);
  • temp = ((left >>> 1) ^ right) & 0x55555555; right ^= temp; left ^= (temp << 1);
  • temp = ((right >>> 8) ^ left) & 0x00ff00ff; left ^= temp; right ^= (temp << 8);
  • temp = ((left >>> 1) ^ right) & 0x55555555; right ^= temp; left ^= (temp << 1);
  • temp = (left << 8) | ((right >>> 20) & 0x000000f0);
  • left = (right << 24) | ((right << 8) & 0xff0000) | ((right >>> 8) & 0xff00) | ((right >>> 24) & 0xf0);
  • right = temp;
  • for (i=0; i < shifts.length; i++) {
  • if (shifts[i]) {left = (left << 2) | (left >>> 26); right = (right << 2) | (right >>> 26);}
  • else {left = (left << 1) | (left >>> 27); right = (right << 1) | (right >>> 27);}
  • left &= 0xfffffff0; right &= 0xfffffff0;
  • lefttemp = pc2bytes0[left >>> 28] | pc2bytes1[(left >>> 24) & 0xf]
  • | pc2bytes2[(left >>> 20) & 0xf] | pc2bytes3[(left >>> 16) & 0xf]
  • | pc2bytes4[(left >>> 12) & 0xf] | pc2bytes5[(left >>> 8) & 0xf]
  • | pc2bytes6[(left >>> 4) & 0xf];
  • righttemp = pc2bytes7[right >>> 28] | pc2bytes8[(right >>> 24) & 0xf]
  • | pc2bytes9[(right >>> 20) & 0xf] | pc2bytes10[(right >>> 16) & 0xf]
  • | pc2bytes11[(right >>> 12) & 0xf] | pc2bytes12[(right >>> 8) & 0xf]
  • | pc2bytes13[(right >>> 4) & 0xf];
  • temp = ((righttemp >>> 16) ^ lefttemp) & 0x0000ffff;
  • keys[n++] = lefttemp ^ temp; keys[n++] = righttemp ^ (temp << 16);
  • }
  • }
  • return keys;
  • }
  • function binToHex (s) {
  • var r = "";
  • var hexes = new Array ("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f");
  • for (var i=0; i<s.length; i++) {r += hexes [s.charCodeAt(i) >> 4] + hexes [s.charCodeAt(i) & 0xf];}
  • return r;
  • }
  • function hexToBin (s) {
  • r = "";
  • var hexas = "0123456789abcdef";
  • var i = 0;
  • while (i<s.length) { r += String.fromCharCode((hexas.indexOf(s.charAt(i)) << 4) | hexas.indexOf(s.charAt(i+1))); i+=2;}
  • return r;
  • }
  • function coder_des(texte, cle) {
  • return binToHex(des (cle, texte, 1, 0));
  • }
  • function decoder_des(code, cle) {
  • return des(cle, hexToBin(code), 0, 0);
  • }
  • function codage(){
  • document.forms["form"].CODEE.value = coder_des(document.forms["form"].CLAIRE.value, document.forms["form"].CLE.value);
  • }
  • function decodage(){
  • document.forms["form"].CLAIRE.value = decoder_des(document.forms["form"].CODEE.value, document.forms["form"].CLE.value);
  • }
  • function bruteforce(){
  • var bCahaineCorrecte = false;
  • var sChar="0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^'abcdefghijklmnopqrstuvwxyz ";
  • var sKeyForTest = sChar.substring(0,1);
  • var bFirstKeyForTest = true;
  • var nLenCLE = 0;
  • sChaine = document.forms["form"].CODEE.value;
  • while(!bCahaineCorrecte){
  • nLenCLE = sKeyForTest.length;
  • bIncLnKEY = true;
  • if(!bFirstKeyForTest){
  • for(nNumcar = 0; nNumcar < nLenCLE ; nNumcar++){
  • if(sKeyForTest.substring(nNumcar, nNumcar + 1) != sChar.substring(sChar.length - 1, sChar.length))
  • bIncLnKEY = false;
  • }
  • //on incrémente la longueur de la clé
  • if(bIncLnKEY){
  • nLenCLE++;
  • sKeyForTest = "";
  • for(nNumcar = 0; nNumcar < nLenCLE ; nNumcar++)
  • sKeyForTest = sKeyForTest + sChar.substring(0,1);
  • }
  • //on passe à la clé suivante...
  • else{
  • bFoundPosCharToInc = false;
  • nPosCharToInc = nLenCLE - 1;
  • while(!bFoundPosCharToInc){
  • if(sKeyForTest.substring(nPosCharToInc, nPosCharToInc + 1) != sChar.substring(sChar.length - 1, sChar.length))
  • bFoundPosCharToInc = true;
  • else
  • nPosCharToInc = nPosCharToInc - 1;
  • }
  • sKeyForTest = sKeyForTest.substring(0,nPosCharToInc ) + sChar.substring(sChar.indexOf(sKeyForTest.substring(nPosCharToInc, nPosCharToInc + 1)) + 1,sChar.indexOf(sKeyForTest.substring(nPosCharToInc, nPosCharToInc + 1))+2);
  • while(sKeyForTest.length != nLenCLE)
  • sKeyForTest = sKeyForTest + sChar.substring(0,1);
  • }
  • }
  • else bFirstKeyForTest = false;
  • if(CharsStringIsInThisString(decoder_des(document.forms["form"].CODEE.value, sKeyForTest), sChar)){
  • document.forms["form"].CLE.value = sKeyForTest;
  • document.forms["form"].CLAIRE.value = decoder_des(document.forms["form"].CODEE.value, sKeyForTest);
  • bCahaineCorrecte = true;
  • }
  • }
  • }
  • function CharsStringIsInThisString(sChaineTest, sThisString){
  • var bOKchaine = true;
  • for(nCPT = 0; nCPT < sChaineTest.length; nCPT++)
  • if(sThisString.indexOf(sChaineTest.substring(nCPT, nCPT + 1)) == -1 && sChaineTest.charCodeAt(nCPT) != 0){
  • bOKchaine = false;
  • }
  • return bOKchaine;
  • }
  • //-->
  • </SCRIPT>
  • <p>&nbsp;</p>
  • <FORM name="form" method="post" action="">
  • <TABLE>
  • <TR><TD>Clé :</TD>
  • <TD><input type="text" name="CLE"></TD>
  • </TR>
  • <TR><TD>Chaîne claire (ascii) :</TD>
  • <TD><input name="CLAIRE" type="text" size="110"></TD>
  • </TR>
  • <TR><TD>Chaîne codée (hexa) :</TD>
  • <TD><input name="CODEE" type="text" size="110"></TD>
  • </TR>
  • </TABLE>
  • </FORM>
  • <p>&nbsp;</p>
  • <p>&nbsp;</p>
  • <p>&nbsp;</p>
  • <TABLE align = center>
  • <TD>
  • <input type="button" name="coder" onClick= "codage()" value="Coder">
  • <input type="button" name="decoder" onClick= "decodage()" value="Décoder">
  • <input type="button" onClick= "bruteforce()" name="bruteforce" value="Brute Force!">
  • </TD>
  • </TABLE>
  • </BODY>
  • </HTML>
<HTML>
<HEAD><TITLE>Cryptage DES </TITLE><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></HEAD>

<BODY bgcolor="#CCCCFF" >
<p align="center"><strong><font color="#224242">Cryptage DES</font></strong></p>

  <SCRIPT language="Javascript">
<!--
function des (key, message, encrypt, mode, iv) {
  var spfunction1 = new Array (0x1010400,0,0x10000,0x1010404,0x1010004,0x10404,0x4,0x10000,0x400,0x1010400,0x1010404,0x400,0x1000404,0x1010004,0x1000000,0x4,0x404,0x1000400,0x1000400,0x10400,0x10400,0x1010000,0x1010000,0x1000404,0x10004,0x1000004,0x1000004,0x10004,0,0x404,0x10404,0x1000000,0x10000,0x1010404,0x4,0x1010000,0x1010400,0x1000000,0x1000000,0x400,0x1010004,0x10000,0x10400,0x1000004,0x400,0x4,0x1000404,0x10404,0x1010404,0x10004,0x1010000,0x1000404,0x1000004,0x404,0x10404,0x1010400,0x404,0x1000400,0x1000400,0,0x10004,0x10400,0,0x1010004);
  var spfunction2 = new Array (0x80108020,0x80008000,0x8000,0x108020,0x100000,0x20,0x80100020,0x80008020,0x80000020,0x80108020,0x80108000,0x80000000,0x80008000,0x100000,0x20,0x80100020,0x108000,0x100020,0x80008020,0,0x80000000,0x8000,0x108020,0x80100000,0x100020,0x80000020,0,0x108000,0x8020,0x80108000,0x80100000,0x8020,0,0x108020,0x80100020,0x100000,0x80008020,0x80100000,0x80108000,0x8000,0x80100000,0x80008000,0x20,0x80108020,0x108020,0x20,0x8000,0x80000000,0x8020,0x80108000,0x100000,0x80000020,0x100020,0x80008020,0x80000020,0x100020,0x108000,0,0x80008000,0x8020,0x80000000,0x80100020,0x80108020,0x108000);
  var spfunction3 = new Array (0x208,0x8020200,0,0x8020008,0x8000200,0,0x20208,0x8000200,0x20008,0x8000008,0x8000008,0x20000,0x8020208,0x20008,0x8020000,0x208,0x8000000,0x8,0x8020200,0x200,0x20200,0x8020000,0x8020008,0x20208,0x8000208,0x20200,0x20000,0x8000208,0x8,0x8020208,0x200,0x8000000,0x8020200,0x8000000,0x20008,0x208,0x20000,0x8020200,0x8000200,0,0x200,0x20008,0x8020208,0x8000200,0x8000008,0x200,0,0x8020008,0x8000208,0x20000,0x8000000,0x8020208,0x8,0x20208,0x20200,0x8000008,0x8020000,0x8000208,0x208,0x8020000,0x20208,0x8,0x8020008,0x20200);
  var spfunction4 = new Array (0x802001,0x2081,0x2081,0x80,0x802080,0x800081,0x800001,0x2001,0,0x802000,0x802000,0x802081,0x81,0,0x800080,0x800001,0x1,0x2000,0x800000,0x802001,0x80,0x800000,0x2001,0x2080,0x800081,0x1,0x2080,0x800080,0x2000,0x802080,0x802081,0x81,0x800080,0x800001,0x802000,0x802081,0x81,0,0,0x802000,0x2080,0x800080,0x800081,0x1,0x802001,0x2081,0x2081,0x80,0x802081,0x81,0x1,0x2000,0x800001,0x2001,0x802080,0x800081,0x2001,0x2080,0x800000,0x802001,0x80,0x800000,0x2000,0x802080);
  var spfunction5 = new Array (0x100,0x2080100,0x2080000,0x42000100,0x80000,0x100,0x40000000,0x2080000,0x40080100,0x80000,0x2000100,0x40080100,0x42000100,0x42080000,0x80100,0x40000000,0x2000000,0x40080000,0x40080000,0,0x40000100,0x42080100,0x42080100,0x2000100,0x42080000,0x40000100,0,0x42000000,0x2080100,0x2000000,0x42000000,0x80100,0x80000,0x42000100,0x100,0x2000000,0x40000000,0x2080000,0x42000100,0x40080100,0x2000100,0x40000000,0x42080000,0x2080100,0x40080100,0x100,0x2000000,0x42080000,0x42080100,0x80100,0x42000000,0x42080100,0x2080000,0,0x40080000,0x42000000,0x80100,0x2000100,0x40000100,0x80000,0,0x40080000,0x2080100,0x40000100);
  var spfunction6 = new Array (0x20000010,0x20400000,0x4000,0x20404010,0x20400000,0x10,0x20404010,0x400000,0x20004000,0x404010,0x400000,0x20000010,0x400010,0x20004000,0x20000000,0x4010,0,0x400010,0x20004010,0x4000,0x404000,0x20004010,0x10,0x20400010,0x20400010,0,0x404010,0x20404000,0x4010,0x404000,0x20404000,0x20000000,0x20004000,0x10,0x20400010,0x404000,0x20404010,0x400000,0x4010,0x20000010,0x400000,0x20004000,0x20000000,0x4010,0x20000010,0x20404010,0x404000,0x20400000,0x404010,0x20404000,0,0x20400010,0x10,0x4000,0x20400000,0x404010,0x4000,0x400010,0x20004010,0,0x20404000,0x20000000,0x400010,0x20004010);
  var spfunction7 = new Array (0x200000,0x4200002,0x4000802,0,0x800,0x4000802,0x200802,0x4200800,0x4200802,0x200000,0,0x4000002,0x2,0x4000000,0x4200002,0x802,0x4000800,0x200802,0x200002,0x4000800,0x4000002,0x4200000,0x4200800,0x200002,0x4200000,0x800,0x802,0x4200802,0x200800,0x2,0x4000000,0x200800,0x4000000,0x200800,0x200000,0x4000802,0x4000802,0x4200002,0x4200002,0x2,0x200002,0x4000000,0x4000800,0x200000,0x4200800,0x802,0x200802,0x4200800,0x802,0x4000002,0x4200802,0x4200000,0x200800,0,0x2,0x4200802,0,0x200802,0x4200000,0x800,0x4000002,0x4000800,0x800,0x200002);
  var spfunction8 = new Array (0x10001040,0x1000,0x40000,0x10041040,0x10000000,0x10001040,0x40,0x10000000,0x40040,0x10040000,0x10041040,0x41000,0x10041000,0x41040,0x1000,0x40,0x10040000,0x10000040,0x10001000,0x1040,0x41000,0x40040,0x10040040,0x10041000,0x1040,0,0,0x10040040,0x10000040,0x10001000,0x41040,0x40000,0x41040,0x40000,0x10041000,0x1000,0x40,0x10040040,0x1000,0x41040,0x10001000,0x40,0x10000040,0x10040000,0x10040040,0x10000000,0x40000,0x10001040,0,0x10041040,0x40040,0x10000040,0x10040000,0x10001000,0x10001040,0,0x10041040,0x41000,0x41000,0x1040,0x1040,0x40040,0x10000000,0x10041000);

  var keys = des_createKeys (key);
  var m=0, i, j, temp, temp2, right1, right2, left, right, looping;
  var cbcleft, cbcleft2, cbcright, cbcright2
  var endloop, loopinc;
  var len = message.length;
  var chunk = 0;
  var iterations = keys.length == 32 ? 3 : 9; 
  if (iterations == 3) {looping = encrypt ? new Array (0, 32, 2) : new Array (30, -2, -2);}
  else {looping = encrypt ? new Array (0, 32, 2, 62, 30, -2, 64, 96, 2) : new Array (94, 62, -2, 32, 64, 2, 30, -2, -2);}

  message += "\0\0\0\0\0\0\0\0"; 

  result = "";
  tempresult = "";

  if (mode == 1) { 
    cbcleft = (iv.charCodeAt(m++) << 24) | (iv.charCodeAt(m++) << 16) | (iv.charCodeAt(m++) << 8) | iv.charCodeAt(m++);
    cbcright = (iv.charCodeAt(m++) << 24) | (iv.charCodeAt(m++) << 16) | (iv.charCodeAt(m++) << 8) | iv.charCodeAt(m++);
    m=0;
  }


  while (m < len) {
    left = (message.charCodeAt(m++) << 24) | (message.charCodeAt(m++) << 16) | (message.charCodeAt(m++) << 8) | message.charCodeAt(m++);
    right = (message.charCodeAt(m++) << 24) | (message.charCodeAt(m++) << 16) | (message.charCodeAt(m++) << 8) | message.charCodeAt(m++);


    if (mode == 1) {if (encrypt) {left ^= cbcleft; right ^= cbcright;} else {cbcleft2 = cbcleft; cbcright2 = cbcright; cbcleft = left; cbcright = right;}}


    temp = ((left >>> 4) ^ right) & 0x0f0f0f0f; right ^= temp; left ^= (temp << 4);
    temp = ((left >>> 16) ^ right) & 0x0000ffff; right ^= temp; left ^= (temp << 16);
    temp = ((right >>> 2) ^ left) & 0x33333333; left ^= temp; right ^= (temp << 2);
    temp = ((right >>> 8) ^ left) & 0x00ff00ff; left ^= temp; right ^= (temp << 8);
    temp = ((left >>> 1) ^ right) & 0x55555555; right ^= temp; left ^= (temp << 1);

    left = ((left << 1) | (left >>> 31)); 
    right = ((right << 1) | (right >>> 31)); 


    for (j=0; j<iterations; j+=3) {
      endloop = looping[j+1];
      loopinc = looping[j+2];

      for (i=looping[j]; i!=endloop; i+=loopinc) { 
        right1 = right ^ keys[i]; 
        right2 = ((right >>> 4) | (right << 28)) ^ keys[i+1];

        temp = left;
        left = right;
        right = temp ^ (spfunction2[(right1 >>> 24) & 0x3f] | spfunction4[(right1 >>> 16) & 0x3f]
              | spfunction6[(right1 >>>  8) & 0x3f] | spfunction8[right1 & 0x3f]
              | spfunction1[(right2 >>> 24) & 0x3f] | spfunction3[(right2 >>> 16) & 0x3f]
              | spfunction5[(right2 >>>  8) & 0x3f] | spfunction7[right2 & 0x3f]);
      }
      temp = left; left = right; right = temp; 
    } 

    left = ((left >>> 1) | (left << 31)); 
    right = ((right >>> 1) | (right << 31)); 

    temp = ((left >>> 1) ^ right) & 0x55555555; right ^= temp; left ^= (temp << 1);
    temp = ((right >>> 8) ^ left) & 0x00ff00ff; left ^= temp; right ^= (temp << 8);
    temp = ((right >>> 2) ^ left) & 0x33333333; left ^= temp; right ^= (temp << 2);
    temp = ((left >>> 16) ^ right) & 0x0000ffff; right ^= temp; left ^= (temp << 16);
    temp = ((left >>> 4) ^ right) & 0x0f0f0f0f; right ^= temp; left ^= (temp << 4);

    if (mode == 1) {if (encrypt) {cbcleft = left; cbcright = right;} else {left ^= cbcleft2; right ^= cbcright2;}}
    tempresult += String.fromCharCode ((left>>>24), ((left>>>16) & 0xff), ((left>>>8) & 0xff), (left & 0xff), (right>>>24), ((right>>>16) & 0xff), ((right>>>8) & 0xff), (right & 0xff));

    chunk += 8;
    if (chunk == 512) {result += tempresult; tempresult = ""; chunk = 0;}
  } 

  return result + tempresult;
} 

function des_createKeys (key) {

  pc2bytes0  = new Array (0,0x4,0x20000000,0x20000004,0x10000,0x10004,0x20010000,0x20010004,0x200,0x204,0x20000200,0x20000204,0x10200,0x10204,0x20010200,0x20010204);
  pc2bytes1  = new Array (0,0x1,0x100000,0x100001,0x4000000,0x4000001,0x4100000,0x4100001,0x100,0x101,0x100100,0x100101,0x4000100,0x4000101,0x4100100,0x4100101);
  pc2bytes2  = new Array (0,0x8,0x800,0x808,0x1000000,0x1000008,0x1000800,0x1000808,0,0x8,0x800,0x808,0x1000000,0x1000008,0x1000800,0x1000808);
  pc2bytes3  = new Array (0,0x200000,0x8000000,0x8200000,0x2000,0x202000,0x8002000,0x8202000,0x20000,0x220000,0x8020000,0x8220000,0x22000,0x222000,0x8022000,0x8222000);
  pc2bytes4  = new Array (0,0x40000,0x10,0x40010,0,0x40000,0x10,0x40010,0x1000,0x41000,0x1010,0x41010,0x1000,0x41000,0x1010,0x41010);
  pc2bytes5  = new Array (0,0x400,0x20,0x420,0,0x400,0x20,0x420,0x2000000,0x2000400,0x2000020,0x2000420,0x2000000,0x2000400,0x2000020,0x2000420);
  pc2bytes6  = new Array (0,0x10000000,0x80000,0x10080000,0x2,0x10000002,0x80002,0x10080002,0,0x10000000,0x80000,0x10080000,0x2,0x10000002,0x80002,0x10080002);
  pc2bytes7  = new Array (0,0x10000,0x800,0x10800,0x20000000,0x20010000,0x20000800,0x20010800,0x20000,0x30000,0x20800,0x30800,0x20020000,0x20030000,0x20020800,0x20030800);
  pc2bytes8  = new Array (0,0x40000,0,0x40000,0x2,0x40002,0x2,0x40002,0x2000000,0x2040000,0x2000000,0x2040000,0x2000002,0x2040002,0x2000002,0x2040002);
  pc2bytes9  = new Array (0,0x10000000,0x8,0x10000008,0,0x10000000,0x8,0x10000008,0x400,0x10000400,0x408,0x10000408,0x400,0x10000400,0x408,0x10000408);
  pc2bytes10 = new Array (0,0x20,0,0x20,0x100000,0x100020,0x100000,0x100020,0x2000,0x2020,0x2000,0x2020,0x102000,0x102020,0x102000,0x102020);
  pc2bytes11 = new Array (0,0x1000000,0x200,0x1000200,0x200000,0x1200000,0x200200,0x1200200,0x4000000,0x5000000,0x4000200,0x5000200,0x4200000,0x5200000,0x4200200,0x5200200);
  pc2bytes12 = new Array (0,0x1000,0x8000000,0x8001000,0x80000,0x81000,0x8080000,0x8081000,0x10,0x1010,0x8000010,0x8001010,0x80010,0x81010,0x8080010,0x8081010);
  pc2bytes13 = new Array (0,0x4,0x100,0x104,0,0x4,0x100,0x104,0x1,0x5,0x101,0x105,0x1,0x5,0x101,0x105);


  var iterations = key.length >= 24 ? 3 : 1;
  var keys = new Array (32 * iterations);
  var shifts = new Array (0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0);
  var lefttemp, righttemp, m=0, n=0, temp;

  for (var j=0; j<iterations; j++) { //either 1 or 3 iterations
    left = (key.charCodeAt(m++) << 24) | (key.charCodeAt(m++) << 16) | (key.charCodeAt(m++) << 8) | key.charCodeAt(m++);
    right = (key.charCodeAt(m++) << 24) | (key.charCodeAt(m++) << 16) | (key.charCodeAt(m++) << 8) | key.charCodeAt(m++);

    temp = ((left >>> 4) ^ right) & 0x0f0f0f0f; right ^= temp; left ^= (temp << 4);
    temp = ((right >>> -16) ^ left) & 0x0000ffff; left ^= temp; right ^= (temp << -16);
    temp = ((left >>> 2) ^ right) & 0x33333333; right ^= temp; left ^= (temp << 2);
    temp = ((right >>> -16) ^ left) & 0x0000ffff; left ^= temp; right ^= (temp << -16);
    temp = ((left >>> 1) ^ right) & 0x55555555; right ^= temp; left ^= (temp << 1);
    temp = ((right >>> 8) ^ left) & 0x00ff00ff; left ^= temp; right ^= (temp << 8);
    temp = ((left >>> 1) ^ right) & 0x55555555; right ^= temp; left ^= (temp << 1);
    temp = (left << 8) | ((right >>> 20) & 0x000000f0);
    left = (right << 24) | ((right << 8) & 0xff0000) | ((right >>> 8) & 0xff00) | ((right >>> 24) & 0xf0);
    right = temp;

    for (i=0; i < shifts.length; i++) {
      if (shifts[i]) {left = (left << 2) | (left >>> 26); right = (right << 2) | (right >>> 26);}
      else {left = (left << 1) | (left >>> 27); right = (right << 1) | (right >>> 27);}
      left &= 0xfffffff0; right &= 0xfffffff0;
      lefttemp = pc2bytes0[left >>> 28] | pc2bytes1[(left >>> 24) & 0xf]
              | pc2bytes2[(left >>> 20) & 0xf] | pc2bytes3[(left >>> 16) & 0xf]
              | pc2bytes4[(left >>> 12) & 0xf] | pc2bytes5[(left >>> 8) & 0xf]
              | pc2bytes6[(left >>> 4) & 0xf];
      righttemp = pc2bytes7[right >>> 28] | pc2bytes8[(right >>> 24) & 0xf]
                | pc2bytes9[(right >>> 20) & 0xf] | pc2bytes10[(right >>> 16) & 0xf]
                | pc2bytes11[(right >>> 12) & 0xf] | pc2bytes12[(right >>> 8) & 0xf]
                | pc2bytes13[(right >>> 4) & 0xf];
      temp = ((righttemp >>> 16) ^ lefttemp) & 0x0000ffff; 
      keys[n++] = lefttemp ^ temp; keys[n++] = righttemp ^ (temp << 16);
    }
  } 
  return keys;
}

function binToHex (s) {
  var r = "";
  var hexes = new Array ("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f");
  for (var i=0; i<s.length; i++) {r += hexes [s.charCodeAt(i) >> 4] + hexes [s.charCodeAt(i) & 0xf];}
  return r;
}

function hexToBin (s) {
  r = "";
  var hexas = "0123456789abcdef";
  var i = 0;
  while (i<s.length) { r += String.fromCharCode((hexas.indexOf(s.charAt(i)) << 4) | hexas.indexOf(s.charAt(i+1))); i+=2;}
  return r;
}


function coder_des(texte, cle) {
   return binToHex(des (cle, texte, 1, 0));
}


function decoder_des(code, cle) {
   return des(cle, hexToBin(code), 0, 0);
}


function codage(){
   document.forms["form"].CODEE.value = coder_des(document.forms["form"].CLAIRE.value, document.forms["form"].CLE.value);
}

function decodage(){
   document.forms["form"].CLAIRE.value = decoder_des(document.forms["form"].CODEE.value, document.forms["form"].CLE.value);
}

function bruteforce(){
    var bCahaineCorrecte = false;
    var sChar="0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^'abcdefghijklmnopqrstuvwxyz ";
    var sKeyForTest = sChar.substring(0,1);
    var bFirstKeyForTest = true;
    var nLenCLE = 0;
    sChaine = document.forms["form"].CODEE.value;

   while(!bCahaineCorrecte){
        nLenCLE = sKeyForTest.length;
        bIncLnKEY = true;
        if(!bFirstKeyForTest){
          for(nNumcar = 0; nNumcar < nLenCLE ; nNumcar++){
             if(sKeyForTest.substring(nNumcar, nNumcar + 1) != sChar.substring(sChar.length - 1, sChar.length))
               bIncLnKEY = false;
          }
          //on incrémente la longueur de la clé      
          if(bIncLnKEY){
            nLenCLE++;
            sKeyForTest = "";
            for(nNumcar = 0; nNumcar < nLenCLE ; nNumcar++)
                sKeyForTest = sKeyForTest + sChar.substring(0,1);           
          } 
          //on passe à la clé suivante...
          else{
            bFoundPosCharToInc = false;
            nPosCharToInc = nLenCLE - 1; 
            while(!bFoundPosCharToInc){
                 if(sKeyForTest.substring(nPosCharToInc, nPosCharToInc + 1) != sChar.substring(sChar.length - 1, sChar.length))
                   bFoundPosCharToInc = true; 
                  else
                   nPosCharToInc = nPosCharToInc - 1;
            }          
            sKeyForTest = sKeyForTest.substring(0,nPosCharToInc ) + sChar.substring(sChar.indexOf(sKeyForTest.substring(nPosCharToInc, nPosCharToInc + 1)) + 1,sChar.indexOf(sKeyForTest.substring(nPosCharToInc, nPosCharToInc + 1))+2);
            while(sKeyForTest.length != nLenCLE)
                 sKeyForTest = sKeyForTest + sChar.substring(0,1);             
            }
        }
        else bFirstKeyForTest = false; 
       if(CharsStringIsInThisString(decoder_des(document.forms["form"].CODEE.value, sKeyForTest), sChar)){
          document.forms["form"].CLE.value = sKeyForTest;
          document.forms["form"].CLAIRE.value = decoder_des(document.forms["form"].CODEE.value, sKeyForTest); 
          bCahaineCorrecte = true;       
       } 
   }
  
}

function CharsStringIsInThisString(sChaineTest, sThisString){
   var bOKchaine = true;
   for(nCPT = 0; nCPT < sChaineTest.length; nCPT++)
      if(sThisString.indexOf(sChaineTest.substring(nCPT, nCPT + 1)) == -1 && sChaineTest.charCodeAt(nCPT) != 0){
        bOKchaine = false;
   } 
 return bOKchaine; 
}


//-->
</SCRIPT>

<p>&nbsp;</p>
<FORM name="form" method="post" action="">
<TABLE>
<TR><TD>Clé :</TD>
    <TD><input type="text" name="CLE"></TD>
</TR>
<TR><TD>Chaîne claire (ascii) :</TD>
    <TD><input name="CLAIRE" type="text" size="110"></TD>
</TR>
<TR><TD>Chaîne codée (hexa) :</TD>
    <TD><input name="CODEE" type="text" size="110"></TD>
</TR>
</TABLE>
</FORM>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>

<TABLE align = center> 
  <TD>
  <input type="button" name="coder" onClick= "codage()" value="Coder">
  <input type="button" name="decoder" onClick= "decodage()" value="Décoder">
  <input type="button" onClick= "bruteforce()" name="bruteforce" value="Brute Force!">
  </TD>
</TABLE>

</BODY>
</HTML>

Commentaires et avis

signaler à un administrateur
Commentaire de juki_webmaster le 09/01/2004 16:37:19

Salut , je trouve que ton cryptage et assez complexe comme ton code javascript.
Mais peut tu faire une analyse de ton code , et nous expliquer clairement le fonctionnement de ton systeme .
Sinon je trouve bien ! ( ton code )

signaler à un administrateur
Commentaire de neo1502 le 07/03/2004 14:53:13

Est ce plus fiable que le MD5???

signaler à un administrateur
Commentaire de coucou747 le 19/02/2005 12:51:53

c'est diféreznt du MD5

le md5 ne crypte pas, il cré une chaine de signature.....

le DES lui crypte vraiment

(data encryption standar)

c'est 16 rondes avec des XOR et des inverstions de bits....

signaler à un administrateur
Commentaire de GHOST31 le 02/12/2008 15:52:49

ok super mais y aurais t-il quelqu'un qui pourrais me decrypter cette clef svp
EC97-D0B-54C4A0DF757A5E34D7020-C1-45

merci

signaler à un administrateur
Commentaire de coucou747 le 02/12/2008 17:08:03

on ne hack pas ici.

signaler à un administrateur
Commentaire de GHOST31 le 03/12/2008 05:18:10

c'est pas du hack saucisse y a qu'il m'est impossible d'ouvrir ma boite mail depuis quelques mois et j'ai reussi avec certains logiciel a retrouver cette clef mais crypter elas et je ne suis pas un lamer's non plus je veut juste recuperer ma boite donc si quelqu'un peut me dechiffrer ca ca serai sympas merci

EC97-D0B-54C4A0DF757A5E34D7020-C1-45

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,234 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.