More Than Error Correction: Cryptography from Codes