char readByte, tempByte, addByte[13], ...
So, addByte is 13 bytes long.
Serial.println("Done Reading");
Serial.print(addByte[0]);
Serial.print(addByte[1]);
Serial.print(addByte[2]);
Serial.print(addByte[3]);
Serial.print(addByte[4]);
Serial.print(addByte[5]);
Serial.print(addByte[6]);
Serial.print(addByte[7]);
Serial.print(addByte[8]);
Serial.print(addByte[9]);
Serial.print(addByte[10]);
Serial.print(addByte[11]);
Serial.print(addByte[12]);
Serial.print(addByte[13]);
You are displaying 14 bytes there (0 to 13).
Nowhere in your code to you move anything to addByte. So naturally it displays rubbish.
if (cardreading && tempByte != 2 && tempByte != 10 && tempByte != 13) {
tagString[index] = tempByte;
index ++;
}
You are reading into tagString not addByte.