1. A computing device comprising: a memory comprising a stack, the stack including a return address location; and a stack protection engine, implemented at least partly on a hardware platform and comprising a key array, the stack protection engine operable for: receiving a return address; encoding at least a portion of the return address with a cipher with a key from the key array, comprising using a portion of the return address as an index to the key array; and placing the return encoded address in the return address location of the stack.