Devam Ediyor

C++ code in LINUX

Programming Project 3

Requirement: In this project you will implement HMAC (Keyed-hash Message Authentication Code) using SHA-512 as the building block. HMAC with key K of a input message M can be expressed as:

where is the key padded out to block size, which is 1024 bits when we use SHA-512. Here, opad, ipad are specified padding constants, which is specified as follows:

ipad:00110110 (36 in hexidecimal) repeated by 1024/8=128 times;

opad:01011100 (5C in hexidecimal) repeated by 1024/8=128 times.

We can describe the HMAC algorithm as follows:

1. Append zeros to the end of K to create a b-bit string (e.g., if K is of length 160 bits, and b = 1024 bits, then K will be appended with 864 bits of zeros to the end of K).

2. XOR (bitwise exclusive-or ) with ipad to produce b-bit block Si.

3. Append input message M to Si.

4. Apply hash to the stream generated in step 3.

5. XOR with opad to produce the b-bit block So.

6. Append the hash output from step 4 to So.

7. Apply hash to the stream generated in step 6 to produce the output of HMAC.

After computing the HMAC with key K of an input message M, print it on the screen in hexadecimal format, also store the HMAC output in the output file. Your program should take three arguments: an input file name, an output HMAC file, and a key. For example, you may use the following command to compute an HMAC for the file "text1", with the HMAC output stored in the file text1-hmac, using the key hmac123456: HMAC_gen text1 text1-hmac hmac123456.

If you want to use a longer key, like a key more than 512 bits, it is recommended that you put the key in a file. (Optional: you can use SHA-512 to hash the key entered in the command line to get a longer key to be used in the HMAC algorithm).

You do not need to implement SHA-512 yourself. For an implementation of SHA-512, you can use an existing crypto library, Crypto++ (C++) in this project, which is installed on the virtual machine. While you are using the built-in SHA-512 functions provided by Crypto++ library, you are required to implement HMAC yourself in this program assignment. The tutorial about how to use the SHA-512 function of Crypto++ library is provided in the end of this document.

You can find 5 test files: MSG1, MSG2, MSG3, text1, and hw2.pdf.gz. Please copy all those files to your directory.

Tutorial to use the SHA-512 function in the crypto library Crypto++:

1. In order to use the crypto library, in your C++ source program (e.g., [url removed, login to view]), you need to include the right library files, and use the right namespace as follows.

#include "cryptopp/cryptlib.h"

#include "cryptopp/hex.h"

#include "cryptopp/filters.h"

#include "cryptopp/sha.h"

#include "cryptopp/des.h"

#include "cryptopp/aes.h"

#include "cryptopp/modes.h"

2. How to compile your source program:

g++ -o test1 -L. [url removed, login to view] -lcryptopp

-L. : search library file in current directory and the specified directories.

-lcryptopp : link CryptoPP library.

Here, [url removed, login to view] is the source cpp file name to be compiled.

3. The tool function to perform SHA-512 is illustrated as follows.

string sha_digest(string & plain)


string sha512digest;

SHA512 hash;

StringSource(plain, true, new HashFilter(hash, new StringSink(sha512digest) ) );

return sha512digest;


4. Using the following function call to compute the hash output of the input message:

string output512digest = sha_digest(plain)

Here, plain is the input message stored in a string.

Beceriler: C Programlama, Linux

Daha fazlasını gör: linux and c programming, sample linux code student management system, networking projects linux code, c++programming, algorithm, data structures, change mac address linux code, blowfish linux code project, tms320dm646 linux code, kickstart linux code, linux code display image, linux code server client, linux code jpeg compression, linux code parallel port, linux code open zip file, gif linux code, jpeg linux code, bluetooth advertising linux code, linux code display images

İşveren Hakkında:
( 3 değerlendirme ) BEAVERCREEK, United States

Proje NO: #13738868

Bu iş için 12 freelancer ortalamada $86 teklif veriyor


I am very proficient in c and c++. I have 16 years c++ developing experience now, and have worked for more than 7 years. My work is online game developing, and mainly focus on server side, using c++ under Linux environ Daha Fazla

1 gün içinde %bids___i_sum_sub_32%%project_currencyDetails_sign_sub_33% USD
(85 Değerlendirme)
1 gün içinde %bids___i_sum_sub_32%%project_currencyDetails_sign_sub_33% USD
(230 Değerlendirme)
1 gün içinde %bids___i_sum_sub_32%%project_currencyDetails_sign_sub_33% USD
(26 Değerlendirme)
1 gün içinde %bids___i_sum_sub_32%%project_currencyDetails_sign_sub_33% USD
(31 Değerlendirme)

Hello! Please check my reviews to know a bit about me and my work. Thank you!

in %bids___i_period_sub_35% gün içinde80%project_currencyDetails_sign_sub_37% %project_currencyDetails_code_sub_38%
(17 Değerlendirme)

Hi! I'm a senior software engineer and I'm familiar with this kind of projects as I've done quite a lot of them in here. I can deliver your code (including comments) very quickly. Thank you for considering me.

in %bids___i_period_sub_35% gün içinde60%project_currencyDetails_sign_sub_37% %project_currencyDetails_code_sub_38%
(6 Değerlendirme)

I am working with C++ for some time now. It is not my first language but in my first one (python) I have experiance with hash functions. If you will chose me I guarantee you a well written code that is made with high a Daha Fazla

in %bids___i_period_sub_35% gün içinde80%project_currencyDetails_sign_sub_37% %project_currencyDetails_code_sub_38%
(4 Değerlendirme)

hi , i am an experienced C,C++ programmer and developed codes in windows , linux and mac os x platforms using IDEs like Visual studio, Eclipse, Codeblocks . u can visit my profile to view my related tasks.

in %bids___i_period_sub_35% gün içinde35%project_currencyDetails_sign_sub_37% %project_currencyDetails_code_sub_38%
(3 Değerlendirme)

A proposal has not yet been provided

in %bids___i_period_sub_35% gün içinde88%project_currencyDetails_sign_sub_37% %project_currencyDetails_code_sub_38%
(2 Değerlendirme)

I m a cryptographic engineer

in %bids___i_period_sub_35% gün içinde111%project_currencyDetails_sign_sub_37% %project_currencyDetails_code_sub_38%
(0 Değerlendirme)

I have been working as a software for more than one and half year on C++ and having good knowledge of algorithms and data structures and good problem solving skills.

in %bids___i_period_sub_35% gün içinde70%project_currencyDetails_sign_sub_37% %project_currencyDetails_code_sub_38%
(0 Değerlendirme)
in %bids___i_period_sub_35% gün içinde26%project_currencyDetails_sign_sub_37% %project_currencyDetails_code_sub_38%
(0 Değerlendirme)