<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://sarwiki.informatik.hu-berlin.de/index.php?action=history&amp;feed=atom&amp;title=Rc4.c</id>
	<title>Rc4.c - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://sarwiki.informatik.hu-berlin.de/index.php?action=history&amp;feed=atom&amp;title=Rc4.c"/>
	<link rel="alternate" type="text/html" href="https://sarwiki.informatik.hu-berlin.de/index.php?title=Rc4.c&amp;action=history"/>
	<updated>2026-05-12T11:58:53Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://sarwiki.informatik.hu-berlin.de/index.php?title=Rc4.c&amp;diff=6303&amp;oldid=prev</id>
		<title>Grauel at 10:32, 31 October 2006</title>
		<link rel="alternate" type="text/html" href="https://sarwiki.informatik.hu-berlin.de/index.php?title=Rc4.c&amp;diff=6303&amp;oldid=prev"/>
		<updated>2006-10-31T10:32:03Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;    /*rc4.c */&lt;br /&gt;
    #include &amp;quot;rc4.h&amp;quot;&lt;br /&gt;
    static void swap_byte(unsigned char *a, unsigned char *b);&lt;br /&gt;
    void prepare_key(unsigned char *key_data_ptr, int key_data_len,&lt;br /&gt;
    rc4_key *key)&lt;br /&gt;
    {&lt;br /&gt;
         unsigned char swapByte;&lt;br /&gt;
         unsigned char index1;&lt;br /&gt;
         unsigned char index2;&lt;br /&gt;
         unsigned char* state;&lt;br /&gt;
         short counter;    &lt;br /&gt;
 &lt;br /&gt;
         state = &amp;amp;key-&amp;gt;state[0];        &lt;br /&gt;
         for(counter = 0; counter &amp;lt; 256; counter++)              &lt;br /&gt;
         state[counter] = counter;              &lt;br /&gt;
         key-&amp;gt;x = 0;    &lt;br /&gt;
         key-&amp;gt;y = 0;    &lt;br /&gt;
         index1 = 0;    &lt;br /&gt;
         index2 = 0;            &lt;br /&gt;
         for(counter = 0; counter &amp;lt; 256; counter++)      &lt;br /&gt;
         {              &lt;br /&gt;
              index2 = (key_data_ptr[index1] + state[counter] +&lt;br /&gt;
                 index2) % 256;                &lt;br /&gt;
              swap_byte(&amp;amp;state[counter], &amp;amp;state[index2]);            &lt;br /&gt;
 &lt;br /&gt;
              index1 = (index1 + 1) % key_data_len;  &lt;br /&gt;
         }      &lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     void rc4(unsigned char *buffer_ptr, int buffer_len, rc4_key *key)&lt;br /&gt;
     {&lt;br /&gt;
         unsigned char x;&lt;br /&gt;
         unsigned char y;&lt;br /&gt;
         unsigned char* state;&lt;br /&gt;
         unsigned char xorIndex;&lt;br /&gt;
         short counter;              &lt;br /&gt;
 &lt;br /&gt;
         x = key-&amp;gt;x;    &lt;br /&gt;
         y = key-&amp;gt;y;    &lt;br /&gt;
 &lt;br /&gt;
         state = &amp;amp;key-&amp;gt;state[0];        &lt;br /&gt;
         for(counter = 0; counter &amp;lt; buffer_len; counter ++)      &lt;br /&gt;
         {              &lt;br /&gt;
              x = (x + 1) % 256;                      &lt;br /&gt;
              y = (state[x] + y) % 256;              &lt;br /&gt;
              swap_byte(&amp;amp;state[x], &amp;amp;state[y]);                        &lt;br /&gt;
 &lt;br /&gt;
              xorIndex = (state[x] + state[y]) % 256;                &lt;br /&gt;
 &lt;br /&gt;
              buffer_ptr[counter] ^= state[xorIndex];        &lt;br /&gt;
          }              &lt;br /&gt;
          key-&amp;gt;x = x;    &lt;br /&gt;
          key-&amp;gt;y = y;&lt;br /&gt;
     }&lt;br /&gt;
 &lt;br /&gt;
     static void swap_byte(unsigned char *a, unsigned char *b)&lt;br /&gt;
     {&lt;br /&gt;
         unsigned char swapByte;&lt;br /&gt;
 &lt;br /&gt;
         swapByte = *a;&lt;br /&gt;
         *a = *b;      &lt;br /&gt;
         *b = swapByte;&lt;br /&gt;
     }&lt;/div&gt;</summary>
		<author><name>Grauel</name></author>
	</entry>
</feed>