$rc4(texte,clé) < encryption rc4

Contenu du snippet

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
}

A voir également

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.