summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--task1_hex_to_base64.c35
-rw-r--r--test.sh22
2 files changed, 54 insertions, 3 deletions
diff --git a/task1_hex_to_base64.c b/task1_hex_to_base64.c
index c4bf7d9..8e19f74 100644
--- a/task1_hex_to_base64.c
+++ b/task1_hex_to_base64.c
@@ -169,7 +169,20 @@ int convert_to_base64(char *encode, char *result)
}
-void xor_string(char *str1, char* str2, char *result, int length) {
+void xor_string(char *str1, char *key, char *result)
+{
+ int i, j;
+ int length_key = strlen(key);
+
+ for(i=0, j=0;i<strlen(str1);i++,j++) {
+ if (j >= length_key)
+ j = 0;
+
+ result[i] = str1[i] ^ key[j];
+ }
+}
+
+void xor_string_equal_length(char *str1, char* str2, char *result, int length) {
int i;
for(i=0;i<length;i++)
@@ -286,6 +299,18 @@ void task4() {
}
+void task5()
+{
+ char *stanze = "Burning 'em, if you ain't quick and nimble\nI go crazy when I hear a cymbal";
+
+ //printf("%s\n", stanze);
+ char *result = malloc(strlen(stanze));
+ char *printable = malloc(strlen(stanze)*5);
+ xor_string(stanze, "ICE", result);
+ hex_binary_to_string(result, printable, 2*strlen(stanze));
+ printf("%s\n", printable);
+}
+
int main(int argc, char **argv)
{
@@ -298,7 +323,7 @@ int main(int argc, char **argv)
char *back_hex = malloc(length);
int i = convert_hex_string_to_character_string(argv[1], tmp);
int j = convert_hex_string_to_character_string(argv[2], tmp2);
- xor_string(tmp, tmp2, __xor_string, strlen(argv[2]));
+ xor_string_equal_length(tmp, tmp2, __xor_string, strlen(argv[2]));
// convert the __xor_string to printable charaters
hex_binary_to_string(tmp2, back_hex, strlen(argv[2]));
printf("***************************\n");
@@ -326,10 +351,14 @@ int main(int argc, char **argv)
//string_looks_
}
-
+/*
printf("***************************\n");
printf("set 1, challenge 4\n");
task4();
+*/
+ //printf("***************************\n");
+ //printf("set 1, challenge 5\n");
+ task5();
}
diff --git a/test.sh b/test.sh
new file mode 100644
index 0000000..c2a1189
--- /dev/null
+++ b/test.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+
+test_compare_string() {
+ if [ "$1" == "$2" ]
+ then
+ echo "test ok"
+ else
+ echo "test broken"
+ fi
+}
+
+test_set1_challenge5() {
+
+OUTPUT=$(./a.out)
+EXCEPTED="0b3637272a2b2e63622c2e69692a23693a2a3c6324202d623d63343c2a26226324272765272a282b2f20430a652e2c652a3124333a653e2b2027630c692b20283165286326302e27282f"
+
+test_compare_string "$OUTPUT" "$EXCEPTED"
+}
+
+
+test_set1_challenge5