authentication credit card .net security design patterns credit credit cards intentional programming aop aspect-oriented programming internet security generative programming card design visa cards encryption java