SimpleHash

Home


WeChat: cstutorcs
QQ: 749389476
* Simple Hash Reversal Lab
* sfold hash function sourced from https://research.cs.vt.edu/AVresearch/hashing/strings.php
* Author: Justin Dunnaway
* Modified by: Michael D. Brown
* Purpose: This code is a graded portion of a KLEE Lab for academic use.

#include
#include
#include
#include
#include

long long int sfold(char * message, int length) {
long int seed = 1000;
long int modulo = 100000000;
int sum = seed;
int iter_length = length/4;

for (int j = 0; j < iter_length; j++) { int start_index = j * 4; int end_index = (j * 4) + 4; long mult = 1; if (end_index >= length) {
end_index = length – 1;

int arr_length = end_index – start_index;
char c[arr_length];
strncpy(c, &message[start_index], arr_length);

for (int k = 0; k < arr_length; k++) { sum += ((c[k] << 1) + sum) * mult; mult *= 256; long mult = 1; for (int k = 0; k < length; k++) { sum += ((message[k] << 1) + sum) * mult; mult *= 256; int mod_value = sum % modulo; if (mod_value >= 0) {
return mod_value;
return (-1)*mod_value;

int main(int argc, char *argv[])
long int length = strlen(argv[1]);

// TODO: Add KLEE constraints here

long int hash = sfold(argv[1], length);

// TODO: Add KLEE asserts here for checking the hash result

printf(“The computed hash value is: %ld .\n”, hash);