OpenCores
URL https://opencores.org/ocsvn/rc4-prbs/rc4-prbs/trunk

Subversion Repositories rc4-prbs

[/] [rc4-prbs/] [trunk/] [README.txt] - Diff between revs 19 and 20

Only display areas with differences | Details | Blame | View Log

Rev 19 Rev 20
Hi,
Hi,
I was looking for a quick implementation of RC4 and I couldn't find one, so I wrote one based on the wikipedia example.
I was looking for a quick implementation of RC4 and I couldn't find one, so I wrote one based on the wikipedia example.
It's quite easy to use:
It's quite easy to use:
1) First, issue rst
1) First, issue rst
2) Load the password byte-by-byte into the password_input port. The lenght of the password is KEY_SIZE
2) Load the password byte-by-byte into the password_input port. The lenght of the password is KEY_SIZE
3) Issue 768 clocks to perform key expansion
3) Issue 768 clocks to perform key expansion
4) Wait 1536 clocks while the module discards the first weak bytes of the stream as per RFC 4345.
4) Wait 1536 clocks while the module discards the first weak bytes of the stream as per RFC 4345.
5) Now you should start receiving the pseudo-random stream via the output bus, one byte every clock. The output_ready signal signals when a valid byte is present at the output K.
5) Now you should start receiving the pseudo-random stream via the output bus, one byte every clock. The output_ready signal signals when a valid byte is present at the output K.
To encrypt or decrypt using RC4 you simply xor your data with the output stream.
To encrypt or decrypt using RC4 you simply xor your data with the output stream.
 
 
 
WARNING: The 256-byte register that this implementation uses is very costly in FPGA resources and will result in >2000 slices used in some synthetizers.
 
 
The testbench and makefile work using icarus verilog and you can peer into rc4_tb.v to see an example implementation.
The testbench and makefile work using icarus verilog and you can peer into rc4_tb.v to see an example implementation.
After installing icarus verilog in your path, just issue:
After installing icarus verilog in your path, just issue:
make
make
and then
and then
./rc4.vvp
./rc4.vvp
And you should see the output of the simulation.
And you should see the output of the simulation.
Any question or suggestion send an email to aortega@alu.itba.edu.ar, cc: alfred@groundworkstech.com
Any question or suggestion send an email to aortega@alu.itba.edu.ar, cc: alfred@groundworkstech.com
Cheers,
Cheers,
Alfredo
Alfredo
PS: This is licensed LGPL, not public domain or BSD, so you should, put a copy of the license in your software and stuff. Yes, I'm talking to you jhunjhun, you too have to do it.
PS: This is licensed LGPL, not public domain or BSD, so you should, put a copy of the license in your software and stuff. Yes, I'm talking to you jhunjhun, you too have to do it.
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.