RC4 PHP

February 17, 2011 at 11:05 pm | Posted in Article, computer and high technology, Hacking | Leave a comment

<?php

/* vim: set expandtab tabstop=4 shiftwidth=4: */
// +———————————————————————-+
// | PHP Version 4                                                        |
// +———————————————————————-+
// | Copyright (c) 1997-2003 The PHP Group                                |
// +———————————————————————-+
// | This source file is subject to version 2.0 of the PHP license,       |
// | that is bundled with this package in the file LICENSE, and is        |
// | available at through the world-wide-web at                           |
// | http://www.php.net/license/2_02.txt.                                 |
// | If you did not receive a copy of the PHP license and are unable to   |
// | obtain it through the world-wide-web, please send a note to          |
// | license@php.net so we can mail you a copy immediately.               |
// +———————————————————————-+
// | Authors: Dave Mertens <dmertens@zyprexia.com>                        |
// +———————————————————————-+
//
// $Id: Rc4.php,v 1.7 2003/11/12 17:46:42 zyprexia Exp $

/**
* RC4 stream cipher routines implementation
*
* in PHP4 based on code written by Damien Miller <djm@mindrot.org>
*
* Usage:
* $key = “pear”;
* $message = “PEAR rulez!”;
*
* $rc4 = new Crypt_RC4;
* $rc4->setKey($key);
* echo “Original message: $message <br>n”;
* $rc4->crypt($message);
* echo “Encrypted message: $message <br>n”;
* $rc4->decrypt($message);
* echo “Decrypted message: $message <br>n”;
*
* @version $Revision: 1.7 $
* @access public
* @package Crypt
* @author Dave Mertens <zyprexia@php.net>
*/
class Crypt_RC4 {

/**
* Real programmers…
* @var array
*/
var $s= array();
/**
* Real programmers…
* @var array
*/
var $i= 0;
/**
* Real programmers…
* @var array
*/
var $j= 0;

/**
* Key holder
* @var string
*/
var $_key;

/**
* Constructor
* Pass encryption key to key()
*
* @see    setKey()
* @param  string key    – Key which will be used for encryption
* @return void
* @access public
*/
function Crypt_RC4($key = null) {
if ($key != null) {
$this->setKey($key);
}
}

function setKey($key) {
if (strlen($key) > 0)
$this->_key = $key;
}

/**
* Assign encryption key to class
*
* @param  string key    – Key which will be used for encryption
* @return void
* @access public
*/
function key(&$key) {
$len= strlen($key);
for ($this->i = 0; $this->i < 256; $this->i++) {
$this->s[$this->i] = $this->i;
}

$this->j = 0;
for ($this->i = 0; $this->i < 256; $this->i++) {
$this->j = ($this->j + $this->s[$this->i] + ord($key[$this->i % $len])) % 256;
$t = $this->s[$this->i];
$this->s[$this->i] = $this->s[$this->j];
$this->s[$this->j] = $t;
}
$this->i = $this->j = 0;
}

/**
* Encrypt function
*
* @param  string paramstr     – string that will encrypted
* @return void
* @access public
*/
function crypt(&$paramstr) {

//Init key for every call, Bugfix 22316
$this->key($this->_key);

$len= strlen($paramstr);
for ($c= 0; $c < $len; $c++) {
$this->i = ($this->i + 1) % 256;
$this->j = ($this->j + $this->s[$this->i]) % 256;
$t = $this->s[$this->i];
$this->s[$this->i] = $this->s[$this->j];
$this->s[$this->j] = $t;

$t = ($this->s[$this->i] + $this->s[$this->j]) % 256;

$paramstr[$c] = chr(ord($paramstr[$c]) ^ $this->s[$t]);
}
}

/**
* Decrypt function
*
* @param  string paramstr     – string that will decrypted
* @return void
* @access public
*/
function decrypt(&$paramstr) {
//Decrypt is exactly the same as encrypting the string. Reuse (en)crypt code
$this->crypt($paramstr);
}

}    //end of RC4 class
?>

selamat mencoba…

greetz : jack.serverisdown

Leave a Comment »

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Blog at WordPress.com.
Entries and comments feeds.

%d bloggers like this: