Skip to content

Commit

Permalink
rename files and do set 1 ex 2
Browse files Browse the repository at this point in the history
  • Loading branch information
reteptilian committed Jan 1, 2021
1 parent b8a9313 commit e4712bd
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 14 deletions.
6 changes: 3 additions & 3 deletions exercises/set1/BUILD
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
cc_library(
name="Set1",
hdrs=[
"string_util.h",
"set_1.h",
],
srcs=[
"string_util.cpp",
"set_1.cpp",
],
deps=[
"@com_google_absl//absl/strings",
Expand All @@ -15,7 +15,7 @@ cc_library(
cc_test(
name = "Set1Test",
srcs = [
"string_util_test.cpp",
"set_1_test.cpp",
],
deps = ["//exercises/set1:Set1",
"@com_google_absl//absl/strings",
Expand Down
32 changes: 26 additions & 6 deletions exercises/set1/string_util.cpp → exercises/set1/set_1.cpp
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
#include "exercises/set1/string_util.h"
#include "exercises/set1/set_1.h"

#include "absl/strings/string_view.h"
#include "absl/strings/str_cat.h"

#include <sstream>
#include <iomanip>
#include <iostream>

namespace cryptopals {
// namespace {

uint8_t ConvertHexToInt(char hex) {
if (hex <= '9') {
Expand All @@ -25,8 +27,8 @@ std::string ConvertHexToBytes(absl::string_view hex) {
return result;
}

const int kBitsPerByte = 8;
const int kBitsPerBase64Char = 6;
const int kBitsPerByte = 8;
const int kBitsPerBase64Char = 6;


void SetBit(char& byte, int index, bool val) {
Expand Down Expand Up @@ -76,10 +78,28 @@ std::string ConvertBytesToBase64(absl::string_view bytes) {
return result;
}

// } // namespace

std::string ConvertHexToBase64(absl::string_view hex) {
return ConvertBytesToBase64(ConvertHexToBytes(hex));
}

std::string ConvertBytesToHex(absl::string_view bytes) {
std::stringstream ss;
ss << std::hex;
for (int i = 0; i < bytes.size(); ++i) {
ss << std::setw(2) << std::setfill('0') << (int)(bytes[i]);
}
return ss.str();
}

std::string XorHex(absl::string_view hex1, absl::string_view hex2) {
std::string bytes1 = ConvertHexToBytes(hex1);
std::string bytes2 = ConvertHexToBytes(hex2);
std::string result_bytes;
for (int i = 0; i < bytes1.size(); ++i) {
result_bytes.push_back(
static_cast<uint8_t>(bytes1[i]) ^ static_cast<uint8_t>(bytes2[i]));
}
return ConvertBytesToHex(result_bytes);
}

} // namespace cryptopals
7 changes: 4 additions & 3 deletions exercises/set1/string_util.h → exercises/set1/set_1.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#ifndef EXERCISES_SET1_STRING_UTIL_H
#define EXERCISES_SET1_STRING_UTIL_H
#ifndef EXERCISES_SET1_SET_1_H
#define EXERCISES_SET1_SET_1_H

#include <string>

Expand All @@ -10,7 +10,8 @@ namespace cryptopals {
std::string ConvertHexToBytes(absl::string_view hex);
uint8_t ConvertHexToInt(char hex);
std::string ConvertHexToBase64(absl::string_view hex);
std::string XorHex(absl::string_view hex1, absl::string_view hex2);

} // namespace cryptopals

#endif // EXERCISES_SET1_STRING_UTIL_H
#endif // EXERCISES_SET1_SET_1_H
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
#include "gtest/gtest.h"

#include "exercises/set1/string_util.h"
#include "exercises/set1/set_1.h"

namespace {

using cryptopals::ConvertHexToBase64;
using cryptopals::ConvertHexToBytes;
using cryptopals::ConvertHexToInt;
using cryptopals::XorHex;

TEST(ConvertHexToInt, ConvertOne) {
EXPECT_EQ(ConvertHexToInt('1'), 1);
Expand All @@ -26,10 +27,15 @@ TEST(ConvertHexToBase64Test, Convert0x000001) {
EXPECT_EQ(ConvertHexToBase64(test_input), expected);
}

TEST(ConvertHexToBase64Test, Exercise1) {
TEST(Set1Test, Exercise1_ConvertHexToBase64) {
const char test_input[] = "49276d206b696c6c696e6720796f757220627261696e206c696b65206120706f69736f6e6f7573206d757368726f6f6d";
const char expected[] = "SSdtIGtpbGxpbmcgeW91ciBicmFpbiBsaWtlIGEgcG9pc29ub3VzIG11c2hyb29t";
EXPECT_EQ(ConvertHexToBase64(test_input), expected);
}

TEST(Set1Test, Exercise2_FixedXor) {
EXPECT_EQ(XorHex("1c0111001f010100061a024b53535009181c", "686974207468652062756c6c277320657965"),
"746865206b696420646f6e277420706c6179");
}

} // namespace

0 comments on commit e4712bd

Please sign in to comment.