Cryptage v2
Script posté par : benoitmacier Vous aussi, postez vos scripts en cliquant ici . Description Algorithme tiré de la page suivante
http://www.editeurjavascript.com/scripts/scripts_autres_3_230.php
envoyé par Digimag.
Quelques petites modifications réalisées par un ami:
- génération de la chaine de caracteres maitresse
- itérations de cryptage
Compatibilité :
Chiffres : Date de création : 17/09/2006
Dernière modif : -
Visites de la page : 21200
Envois par mail : 200
Exemple :
Voici un script en JavaScript qui vous permet de crypter et de décrypter vos donnés avec une clé (un mot de passe). C'est un utilitaire de cryptage assez puissant, on ne peut pas décrypter sans connaître la clé utilisée pour crypter.
Le code :
Entre <HEAD> et </HEAD> :
<script language="javascript">
/*
Algorithme tiré de la page suivante
http://www.editeurjavascript.com/scripts/scripts_autres_3_230.php
amélioré par Martin RONCERAY (2006) en y intégrant
la génération de chaine de caractères permettant de crypter, ainsi que l'itération de cryptage.
*/
function chaine(entree)
{
//Definition des fractions de chaines
var chars1 = "ABCDEFGHIJKLM";
var chars2 = "NOPQRSTUVWXYZ";
var chars3 = "abcdefghijklm";
var chars4 = "nopqrstuvwxyz";
var chars5 = "0123456789 äë";
var chars6 = "ÿüïöâêûîôàèùì";
var chars7 = "òé&~\#\{([-|`";
var chars8 = "_\ç^@)°]=+}¨£";
var chars9 = "$¤%µ*,?;.:/!§";
//Generation de la combinaison
var a = entree.length;
var b = Math.abs(Math.sin(Math.cos(a)));
var str1 = b.toString();
//Definition des listes
var l1 = new Array(str1.charAt(3),
str1.charAt(4),
str1.charAt(5),
str1.charAt(6),
str1.charAt(7),
str1.charAt(8),
str1.charAt(9),
str1.charAt(10),
str1.charAt(11));
var l2 = new Array(1,2,3,4,5,6,7,8,9);
//Tri de la liste
for (c = 0; c < l1.length;c++)
{
var d = c + 1;
while (l1[c] >= l1[d])
{
//Inversion positions dans l1
temp = l1[c];
l1[c] = l1[d];
l1[d] = temp;
//Inversion positions dans l2
temp = l2[c];
l2[c] = l2[d];
l2[d] = temp;
d++;
}
}
chars = "";
for (i=0;i<9;i++)
{
if (l2[i] == "1")
{
chars = chars+chars1;
}
else
{
if (l2[i] == "2")
{
chars = chars+chars2;
}
else
{
if (l2[i] == "3")
{
chars = chars+chars3;
}
else
{
if (l2[i] == "4")
{
chars = chars+chars4;
}
else
{
if (l2[i] == "5")
{
chars = chars+chars5;
}
else
{
if (l2[i] == "6")
{
chars = chars+chars6;
}
else
{
if (l2[i] == "7")
{
chars = chars+chars7;
}
else
{
if (l2[i] == "8")
{
chars = chars+chars8;
}
else
{
chars = chars+chars9;
}
}
}
}
}
}
}
}
}
return chars
}
x=0; y=0;
function symbol(cx,cy,key)
{
var t=0;
var chars = chaine(key);
t=chars.substring(chars.length-cy,chars.length)+chars.substring(0,chars.length-cy);
t=t.charAt(cx);
return t;
}
function crpt(info,objet)
{
var lin=""; var n=0; var c1=0;var c2=0; var t=true;
var text=info; var cle=objet;
cle=passlin(cle,text);
var chars = chaine(cle);
for (n=0;n<text.length;n++)
{
c1=chars.indexOf(cle.charAt(n)); c2=chars.indexOf(text.charAt(n));
if (c2==-1)
{
return false;
}
else if (c1==-1)
{
return false;
}
else
{
lin+=symbol(c1,c2,cle);
}
}
return lin;
}
function dcrpt(info,objet)
{
var lin=""; var n=0; var c1=0;var c2=0; var t=true;
var text=info; var cle=objet;
cle=passlin(cle,text);
var chars = chaine(cle);
for (n=0;n<text.length;n++)
{
c1=chars.indexOf(cle.charAt(n)); c2=chars.indexOf(text.charAt(n));
if (c2==-1)
{
return false;
}
else if (c1==-1)
{
return false;
}
else
{
lin+=symbol(c1,c2,cle);
}
}
return lin;
}
function passlin(cle,text)
{
var lin="";
for (n=0;n<Math.floor(text.length/cle.length);n++)
{
lin+=cle;
}
lin+=cle.substring(0,text.length-n*cle.length);
return lin;
}
function crypt(s)
{
var lin="";
var n=0;
var c1=0;
var c2=0;
var t=true;
if (s==1)
{
var text = document.form.texte1.value;
var cle = document.form.cle1.value;
if (text=="" || cle=="")
{
alert("Merci d'entrer la phrase et la clé.");
return false;
}
var strb = text;
var clef = cle.length;
for (it=0;it<clef;it++)
{
var stra = crpt(strb,cle);
var strb = dcrpt(stra,clef.toString());
}
document.form.texte2.value = strb;
document.form.texte1.value = "";
}
else
{
var text = document.form.texte2.value;
var cle = document.form.cle2.value;
if (text=="" || cle=="")
{
alert("Merci d'entrer la phrase et la clé.");
return false;
}
var clef = cle.length;
var strb = text;
for (it=0;it<clef;it++)
{
var stra = crpt(strb,clef.toString());
var strb = dcrpt(stra,cle);
}
document.form.texte1.value = strb;
document.form.texte2.value = "";
}
}
</script>
Entre <BODY> et </BODY> :Voici un script en JavaScript qui vous permet de crypter et de décrypter vos donnés avec une clé (un mot de passe). C'est un utilitaire de cryptage assez puissant, on ne peut pas décrypter sans connaître la clé utilisée pour crypter.
<form name="form" id="form">
<table width="413" height="180" border="2" cellpadding="0" cellspacing="0">
<tr>
<td width="264" rowspan="2">Entrez une phrase à crypter:<br>
<textarea name="texte1" cols="45" rows="5" id="texte1">La phrase de test</textarea>
</td>
<td width="150" height="38">Entrez la clé:<br>
<input name="cle1" type="text" id="cle1" value="La clé" size="30">
</td>
</tr>
<tr>
<td height="63" align="center" valign="middle">
<input name="crypte" type="button" class="Style4" id="crypte" value="Crypter" onClick="crypt(1)">
</td>
</tr>
<tr>
<td rowspan="2">Entrez la phrase cryptée:<br>
<textarea name="texte2" cols="45" rows="5" class="Style2" id="texte2"></textarea>
</td>
<td height="38" align="left" valign="top">Entrez la clé:<br>
<input name="cle2" type="text" id="cle2" size="30">
</td>
</tr>
<tr>
<td height="63" align="center" valign="middle">
<input name="crypte" type="button" id="crypte" value="Decrypter" onClick="crypt(2)"></td>
</tr>
</table>
</form>
Services email :
Je désire recevoir ce script par email
Je désire recevoir un email en cas de modification de ce script
Je désire m'abonner à la newsletter de l'éditeur JavaScript
Les annotations des visiteurs :
De Master_asea - le 26-09-2006 très bien mais est ce que sa serait possible d'ajouter un bouton qui copie le text crypter ? Sa serais bien. De revanb - le 29-09-2006 Mhhh... bien, mais si je puis me permettre... "C'est un utilitaire de cryptage assez puissant, on ne peut pas décrypter sans connaître la clé utilisée pour crypter."
Ton chiffre semble s'apparenter au chiffre de Vigenère ou du moins à un chiffre par substitution poly-alphabétique. Il a été cassé il y a bien longtemps. Se script est bien, mais il vaut mieux ne pas l'utiliser pour chiffre des données sensibles ;)
Ah et, au fait, "décrypter sans connaître la clé" est un pléonasme ^^ on dit déchiffrer lorsqu'on a la clef et décrypter lorsqu'on cryptanalyse... Voilà pour la petite touche culturelle ^^
Bonne continuation ! De souks - le 12-12-2006 Comme de nombreuses sources de ce genre, tous les caractères ne sont pas "cryptable", notamment pour l'apostrophe ...
Sinon, cryptage déjà cassé, mais qui a le mérite d'être assez explicite et utilisable facilement. De massiv - le 27-08-2007 je confirme avec de simple statistiques sur la redondance des lettres dans un texte type on peut arriver à casser ce genre codage par substitution ... pas très
puissant donc ...
>> Poster une annotation sur ce script