Introduction
RC6 is a symmetric key block cipher designed for the Advanced Encryption
Standard (AES) competition, where it was a finalist. Although it is a proprietary algorithm designed by RSA Laboratories and RSA Security, the design’s
patents expired between 2015 and 2017. The algorithm is now in the public
domain, after the internals were published by Ronald Rivest in 19981.
2 Directions
1. Download the paper and read sections 1 (Introduction) and 2 (Details of
RC6) at minimum.
2. Implement RC6-w/r/b where w = 32, r = 20 and b = |key|, 0 < b ≤ 255
in bytes, see section 3. You may use any language you want, however your
implementation must run on Remote with available libraries.
3. Bonus! Write unit tests for your implementation using the test vectors
from the appendix in both the encryption and decryption modes. If your
implementation passes these tests, you will earn 25 points of extra credit.
You may use any available test suite for your language, e.g.
BoostTest for C++, CUnit for C or C++, CUnit for C, Pytest for Python,
etc.
1Rivest, Ronald L., et al. “The RC6TMblock cipher.” First Advanced Encryption Standard
(AES) Conference. 1998. [login to view URL]
1
3 Implementation
Implement RC6-w/r/b where w = 32, r = 20 and b = |key|, 0 < b ≤ 255 in
bytes. Your program must have a command line interface that accepts an input
file and produces an output file: run INPUT OUTPUT, where INPUT is the path
to the input file, and OUTPUT is the path to the output file.
The input of your program is a path to an input file containing three lines:
The first line specifies the mode, either encryption or decryption. The second
line is the plaintext (for encryption mode) or ciphertext (for decryption mode).
The third line is the user key. Both plaintext/ciphertext and the user key consist
of a label string ending in a colon, then a space-separated list of hexadecimal
byte values. The file ends with a Unix line ending character (\n).
The output of your program is a text file located at the path specified on the
command line: The first and only line is the ciphertext (for encryption mode)
or plaintext (for ciphertext). Like the input file, the line begins with a label
string ending in a colon, then a space-separated list of hexadecimal bytes. The
input files are presumed to be well-formed; you do not need to test the files for
proper format.
See the listings in subsection 3.1.
3.1 Examples
input [login to view URL]
encryption
plaintext : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
userkey : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
output [login to view URL]
ciphertext : 8f c3 a5 36 56 b1 f7 78 c1 29 df 4e 98 48 a4 1e
input [login to view URL]
decryption
ciphertext : 8f c3 a5 36 56 b1 f7 78 c1 29 df 4e 98 48 a4 1e
userkey : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
output [login to view URL]
plaintext : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
4 Submitting Work
If your language is compiled, include a Makefile that has, at minimum, an all
target that builds the project and produces an executable called run, and a
2 clean target that removes the executable and any intermediate files generated.
If you implement the test cases, also include a target test that builds the test executable. If your language is interpreted, name the script file run.<extension>,
and include a “hashbang” on the first line.
Use a README file to document how the program should be executed.
Include at minimum:
• Instructions to build your executable for compiled languages.
• Command line interface usage instructions for your implementation.
• Acknowledgements of assistance you received and citations for works to
which you referred.
Place all your files under one directory with a unique name. Archive the contents of this directory
(do not include executable binaries or intermediate files!) using the following
command:
tar -cvf <directory_name>.tar <directory_name>
For example,
tar -cvf [login to view URL] p1-project
Hi there.
I am a ISO Standard Expert and a Software Developer since 10 years.
I have developed Encryption / Decryption based on AES, DES, 3DES, RSA and ByCrypt etc.
I have checked your requirements and can develop this RC6 AES Cipher Solution for you within few hours on Java language.
You may contact for further disucssion.
HELLO DEAR EMPLOYER,
First receive warm greetings, and hoping you are good, i welcome you to the home of Amazing services and quality. I have carefully gone through your project titled ((RC6 Block Cipher))
I'M AN EXPERT IN NAMED SKILLS,
OVER 18 YEARS OF EXPERIENCE,
After KEENLY reading your description and being in possession of all CLEARLY STATED REQUIRED SKILLS ((Computer Security, Encryption and C Programming)) as this is my area of PROFESSIONAL SPECIALISATION having the above QUALIFICATIONS, i hereby humbly request you to consider my bid for QUALITY and PROFESSIONAL work.
###// No timeline & Quality Excuses// Unlimited Revisions// 100% SATISFACTION GUARANTEED###
Message Me We Discuss More About The Project.
incase the project is deleted please hire me directly using the following link;
https://www.freelancer.com/u/ExpertEverlyne
THANK-YOU & WELCOME.
Hello, I am student at a CiberSecurity Master Degree program and I would gladly implement and test the RC6 variant. I am also a Software Developer with 1 year experience and I consider that i can meet your requirements.