Creando un conjunto de potencias de una secuencia

Estoy tratando de crear un programa que sea una base para crear posibles combinaciones de una secuencia, una cadena o un número. Este es un tipo de programa de cifrado / descifrado. Estoy usando Visual Studio 2013 y C #. Lo que estoy tratando de hacer es generar un conjunto de energía fuera de una secuencia, pero estoy un poco confundido y no puedo continuar. Aquí está el código.

public static void randomSeq(){
    int temp = 0;
    string seq = "1234";
    StringBuilder sb = new StringBuilder();
    char[] bits = seq.Select((char c) => c).ToArray();
    Console.Write("Given Sequence: ");
    Console.Write(seq);
    Console.WriteLine();
    Console.WriteLine("Generated possiblities");
    foreach (char item in bits){
        Console.WriteLine(item);
    }
    do{
        if (temp <= 2){
            for (int i = temp + 1; i < bits.Length; i++){
                 sb.Append(bits[temp]);
                 sb.Append(bits[i]);
                 Console.WriteLine(sb);
                 sb.Clear();
            }
        }else{
            if (temp > 2){
                for (int k = 0; k < temp; k++){
                    sb.Append(bits[k]);
                }
                for (int l = temp + 1; l < bits.Length; l++){
                    sb.Append(bits[temp]);
                    sb.Append(bits[l]);
                    Console.WriteLine(sb);
                    sb.Clear();
                }
            }
        }
        temp++;
    }
    while (temp != bits.Length);
}

Quiero que este código sea genérico, es decir, pase cualquier secuencia y genera un conjunto de energía para mí. Entonces quiero reutilizarlo más en mi programa. Puedo hacer el resto, simplemente estoy atascado en la generación del conjunto de energía. ¿Alguien me puede ayudar?.

Respuestas a la pregunta(4)

Su respuesta a la pregunta