Ds18b20 returning wrong CRC

I think that's Incorrect, you may need:

                //bool test = crc8(scratchPad, 7) == scratchPad[7];
                Serial.print("Calc CRC: ");
                Serial.println(OneWire::crc8(scratchPad, 7));

However I may be misinterpretting the datasheet, there's both ROM and RAM that use this. Without seeing which crc function you used I explicitly used the OneWire library version which should be the correct one (there are different CRC8's around).

[ Whoops, didn't notice the results were varying for the same set of bytes! ignore me! ]