Some encryption algorithms are theoretically breakable but practically unbreakable. Why is that?