#include #include #include #include "sha256.h" using namespace std; // function prototype, don't put your code here. Add it at the bottom string merkle(vector ); int main() { vector txns; string str;...

1 answer below »
I need help writing the code for the two lab sections attached (6.22 and 7.10) Starter code provided for review along with lab directions


#include #include #include #include "sha256.h" using namespace std; // function prototype, don't put your code here. Add it at the bottom string merkle(vector); int main() { vector txns; string str; // read stdin until it is empty while(getline(cin, str)) txns.push_back(str); // output the Merkle root to the screen cout < merkle(txns)="">< endl;="" return="" 0;="" }="" string=""> v1) { vector v2; string merkleRoot = ""; // add your code here return merkleRoot; } ifndef SHA256.docx #ifndef SHA256_H #define SHA256_H #include class SHA256 { protected: typedef unsigned char uint8; typedef unsigned int uint32; typedef unsigned long long uint64; const static uint32 sha256_k[]; static const unsigned int SHA224_256_BLOCK_SIZE = (512/8); public: void init(); void update(const unsigned char *message, unsigned int len); void final(unsigned char *digest); static const unsigned int DIGEST_SIZE = ( 256 / 8); protected: void transform(const unsigned char *message, unsigned int block_nb); unsigned int m_tot_len; unsigned int m_len; unsigned char m_block[2*SHA224_256_BLOCK_SIZE]; uint32 m_h[8]; }; std::string sha256(std::string input); #define SHA2_SHFR(x, n) (x >> n) #define SHA2_ROTR(x, n) ((x >> n) | (x < ((sizeof(x)="">< 3)="" -="" n)))="" #define="" sha2_rotl(x,="" n)="" ((x="">< n)="" |="" (x="">> ((sizeof(x) < 3)="" -="" n)))="" #define="" sha2_ch(x,="" y,="" z)="" ((x="" &="" y)="" ^="" (~x="" &="" z))="" #define="" sha2_maj(x,="" y,="" z)="" ((x="" &="" y)="" ^="" (x="" &="" z)="" ^="" (y="" &="" z))="" #define="" sha256_f1(x)="" (sha2_rotr(x,="" 2)="" ^="" sha2_rotr(x,="" 13)="" ^="" sha2_rotr(x,="" 22))="" #define="" sha256_f2(x)="" (sha2_rotr(x,="" 6)="" ^="" sha2_rotr(x,="" 11)="" ^="" sha2_rotr(x,="" 25))="" #define="" sha256_f3(x)="" (sha2_rotr(x,="" 7)="" ^="" sha2_rotr(x,="" 18)="" ^="" sha2_shfr(x,="" 3))="" #define="" sha256_f4(x)="" (sha2_rotr(x,="" 17)="" ^="" sha2_rotr(x,="" 19)="" ^="" sha2_shfr(x,="" 10))="" #define="" sha2_unpack32(x,="" str)="" \="" {="" \="" *((str)="" +="" 3)="(uint8)" ((x)="" );="" \="" *((str)="" +="" 2)="(uint8)" ((x)="">> 8); \ *((str) + 1) = (uint8) ((x) >> 16); \ *((str) + 0) = (uint8) ((x) >> 24); \ } #define SHA2_PACK32(str, x) \ { \ *(x) = ((uint32) *((str) + 3) ) \ | ((uint32) *((str) + 2) < 8)="" \="" |="" ((uint32)="" *((str)="" +="" 1)="">< 16)="" \="" |="" ((uint32)="" *((str)="" +="" 0)="">< 24);="" \="" }="" #endif="" include="" 1.docx="" #include=""> #include #include "sha256.h" const unsigned int SHA256::sha256_k[64] = //UL = uint32 {0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2}; void SHA256::transform(const unsigned char *message, unsigned int block_nb) { uint32 w[64]; uint32 wv[8]; uint32 t1, t2; const unsigned char *sub_block; int i; int j; for (i = 0; i < (int)="" block_nb;="" i++)="" {="" sub_block="message" +="" (i="">< 6);="" for="" (j="0;" j="">< 16;="" j++)="" {="" sha2_pack32(&sub_block[j="">< 2],="" &w[j]);="" }="" for="" (j="16;" j="">< 64;="" j++)="" {="" w[j]="SHA256_F4(w[j" -="" 2])="" +="" w[j="" -="" 7]="" +="" sha256_f3(w[j="" -="" 15])="" +="" w[j="" -="" 16];="" }="" for="" (j="0;" j="">< 8;="" j++)="" {="" wv[j]="m_h[j];" }="" for="" (j="0;" j="">< 64;="" j++)="" {="" t1="wv[7]" +="" sha256_f2(wv[4])="" +="" sha2_ch(wv[4],="" wv[5],="" wv[6])="" +="" sha256_k[j]="" +="" w[j];="" t2="SHA256_F1(wv[0])" +="" sha2_maj(wv[0],="" wv[1],="" wv[2]);="" wv[7]="wv[6];" wv[6]="wv[5];" wv[5]="wv[4];" wv[4]="wv[3]" +="" t1;="" wv[3]="wv[2];" wv[2]="wv[1];" wv[1]="wv[0];" wv[0]="t1" +="" t2;="" }="" for="" (j="0;" j="">< 8;="" j++)="" {="" m_h[j]="" +="wv[j];" }="" }="" }="" void="" sha256::init()="" {="" m_h[0]="0x6a09e667;" m_h[1]="0xbb67ae85;" m_h[2]="0x3c6ef372;" m_h[3]="0xa54ff53a;" m_h[4]="0x510e527f;" m_h[5]="0x9b05688c;" m_h[6]="0x1f83d9ab;" m_h[7]="0x5be0cd19;" m_len="0;" m_tot_len="0;" }="" void="" sha256::update(const="" unsigned="" char="" *message,="" unsigned="" int="" len)="" {="" unsigned="" int="" block_nb;="" unsigned="" int="" new_len,="" rem_len,="" tmp_len;="" const="" unsigned="" char="" *shifted_message;="" tmp_len="SHA224_256_BLOCK_SIZE" -="" m_len;="" rem_len="len">< tmp_len="" len="" :="" tmp_len;="" memcpy(&m_block[m_len],="" message,="" rem_len);="" if="" (m_len="" +="" len="">< sha224_256_block_size)="" {="" m_len="" +="len;" return;="" }="" new_len="len" -="" rem_len;="" block_nb="new_len" sha224_256_block_size;="" shifted_message="message" +="" rem_len;="" transform(m_block,="" 1);="" transform(shifted_message,="" block_nb);="" rem_len="new_len" %="" sha224_256_block_size;="" memcpy(m_block,="" &shifted_message[block_nb="">< 6],="" rem_len);="" m_len="rem_len;" m_tot_len="" +="(block_nb" +="" 1)="">< 6;="" }="" void="" sha256::final(unsigned="" char="" *digest)="" {="" unsigned="" int="" block_nb;="" unsigned="" int="" pm_len;="" unsigned="" int="" len_b;="" int="" i;="" block_nb="(1" +="" ((sha224_256_block_size="" -="" 9)="">< (m_len="" %="" sha224_256_block_size)));="" len_b="(m_tot_len" +="" m_len)="">< 3;="" pm_len="block_nb">< 6;="" memset(m_block="" +="" m_len,="" 0,="" pm_len="" -="" m_len);="" m_block[m_len]="0x80;" sha2_unpack32(len_b,="" m_block="" +="" pm_len="" -="" 4);="" transform(m_block,="" block_nb);="" for="" (i="0" ;="" i="">< 8;="" i++)="" {="" sha2_unpack32(m_h[i],="" &digest[i="">< 2]); } } std::string sha256(std::string input) { unsigned char digest[sha256::digest_size]; memset(digest,0,sha256::digest_size); sha256 ctx = sha256(); ctx 2]);="" }="" }="" std::string="" sha256(std::string="" input)="" {="" unsigned="" char="" digest[sha256::digest_size];="" memset(digest,0,sha256::digest_size);="" sha256="" ctx="SHA256();">
Answered Same DayOct 02, 2021

Answer To: #include #include #include #include "sha256.h" using namespace std; // function prototype, don't put...

Arun Shankar answered on Oct 08 2021
147 Votes
#include
#include
#include
using namespace std;
// Part A
// add
your enum declaration here
enum Month {JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC};
// function prototypes
float meanDailyTempChange(vector&, unsigned int, unsigned int);
float meanDailyTempChange(vector&, Month);
int main()
{
ifstream inFile;
vector data;
float value;
// open, read, and close data file
inFile.open("temperature2014.dat", ios::in);
if (!inFile) cout << "Failed to open file\n";
while(inFile >> value) {data.push_back(value);}
inFile.close();
// call the...
SOLUTION.PDF

Answer To This Question Is Available To Download

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here