System and survival signatures are important and popular tools for studying and analysing the reliability of systems. However, it is difficult to compute these signatures for systems with complex reliability structure functions and large numbers of components. This paper presents a new algorithm that is able to compute exact signatures for systems that are far more complex than is feasible using existing approaches. This is based on the use of reduced order binary decision diagrams (ROBDDs), multidimensional arrays and the dynamic programming paradigm. Results comparing the computational efficiency of deriving signatures for some example systems (including complex benchmark systems from the literature) using the new algorithm and a comparison enumerative algorithm are presented and demonstrate a significant reduction in computation time and improvement in scalability with increasing system complexity.