El problema parece ser con un error en criptojs que hace que la biblioteca no funcione si la cadena de entrada contiene nuevas líneas. Codificando el archivo como este:
openssl enc -aes-256-cbc -in pup.jpg -pass pass:"password" | base64 | tr -d '\n' > pup.enc
soluciona el problema. El problema quiere con el JavaScript, pero con la codificación. Bueno, y con JavaScript, porque hay un error en criptojs: https://code.google.com/p/crypto-js/issues/detail?id=38