Tout est plus bas :) le code n'est pas commenté car il me reste des zones d'ombre sur le fonctionnement ( je n'ai fait que convertir le RFC )
Source / Exemple :
; ca permet de coder décoder en RC4, le code est lent, très lent !
; ne me demandez pas d'explications, je me suis juste contenté
; d'adapter l'algo pour mIRC... Par contre je vous préviens, l'algo
; est lent, très lent sur mIRC, a vous de voir ce que vous pouvez
; faire pour l'arranger :D
; Description:
; Il a été dévellopé par Ron Rivest pour RSA en 1987, l'algo est
; longtemps resté secret, le cryptage ne dépend pas du texte mais
; seulement de la clé
; Caracteristiques:
; * Environ 1000 milliards de clés différentes
; * Si on test 1 millions de clés par secondes, il faudrait environ
; 13 jours pour décrypter l'algo
; * Avec 1000 machines en réseau, environ 20 minutes...
; * Faiblesses de sécurité si la clé fait moins de 40 bytes
; * Très utilisé dans le protocol SSL en raison de son efficacité
; Utilisation:
; $rc4(texte,clé)
; $rc4(texte_crypté,clé)
alias rc4 {
if (!$2) halt
if ($hget(rc4)) hfree rc4
if ($hget(rc4arr)) hfree rc4arr
hmake rc4 255
hmake rc4arr 255
if (!$2) halt
var %a = $len($2)
var %i = 0
while ( %i <= 255 ) {
hadd rc4arr %i %i
hadd rc4 %i $asc($mid($2,$calc($calc(%i % %a) + 1),1))
inc %i
}
var %i = 0
var %j = 0
while ( %i <= 255 ) {
var %k = $calc($calc(%k + $hget(rc4arr,%i) + $hget(rc4,%i)) % 256)
var %m = $hget(rc4arr,%i)
hadd rc4arr %i $hget(rc4arr,%k)
hadd rc4arr %k %m
inc %i
}
var %i = 0
var %k = 0
var %b = 1
while ( %b <= $len($1) ) {
var %i = $calc($calc(%i + 1) % 256)
var %k = $calc($calc(%k + $hget(rc4arr,%i)) % 256)
var %t = $calc($calc($hget(rc4arr,%i) + $hget(rc4arr,%k)) % 256)
var %n = $hget(rc4arr,%i)
hadd rc4arr %i $hget(rc4arr,%k)
hadd rc4arr %k %n
var %y = $hget(rc4arr,%t)
var %rc4 = %rc4 $+ $replace($chr($xor($asc($mid($1,%b,1)),%y)),$chr(32),$chr(10))
inc %b
}
return $replace(%rc4,$chr(10),$chr(32))
hfree rc4
hfree rc4arr
}
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.