hardware and software ntruencrypt implementation 5047886