Implementing a 1024-bit RSA on FPGA
Jing Lu, Qian Wan
RSA Algorithm Overview:
System Architecture:
Hardware Implementation:
We implemented a 521-bit Fibonacci Linear Feedback Shift Register (LFSR) to generate 512-bit pseudo random numbers, which are used in primality test.
Simulation Waveforms:
We used Xilinx Core Generator System to first generator a combinatorial 32-bit adder. Then we built our 512-bit and 1024-bit adders by concatenating 16 and 32 32-bit adders, respectively.
Simulation Waveforms:
We used binary method to implement modular multiplication. You can find more detail in the report.
Simulation Waveforms:
We used binary method to implement modular exponentation. You can find more detail in the report.
Simulation Waveforms:
We implemented Miller and Rabin's primality test algorithm. You can find more detail in the report.
Simulation Waveforms:
We implemented extended Euler's algorithm. You can find more detail in the report.
Simulation Waveforms:
VHDL Source Code, Testbench, and Makefile: rsa_circuit.zip
Testing: A brief description of the procedures can be found at Testing.doc
The RSA Java program can be downloaded here: myRSA.java and an example of 1024-bit result sets can be seen here: myRSA result
Documentation: