Chiffrierung zur Dechiffrierung
#1
Moin!
Vielleicht hat ja jemand etwas Langeweile und beteiligt sich am folgenden Rätsel.
Ihr müsst nicht Alan Turing sein, denn die Entschlüsselung gebe ich vor!

Ich schicke euch zunächst den verschlüsselten Text.

15800--538-3542-144--14579--697-13--4464-144-13365-9146-253-86--39--12883-514-33
oder auch
607-18--13993-4217-14--14579--26-559--171-12312-13365-351-13773-86--39--495-357-13553
was das Gleiche bedeutet. Smile
Es gibt nahezu unendlich viele verschiedene Verschlüsselungsmöglichkeiten, die allesamt mit folgender Formel das gleiche Ergebnis bringen.

Wenn ihr ihn in A1 kopiert, wird er wie folgt entschlüsselt:
=TEXTKETTE(NACHSPALTE(TEXTTEILEN(A1;"-";;0);LAMBDA(x;WENNFEHLER(TEXTVOR(ADRESSE(1;x;2);"$");" "))))

Die Frage ist:
Wie habe ich den Text zur Ziffernfolge verschlüsselt?
(natürlich ohne VBA)

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#2
Wegen ADRESSE und der maximalen Anzahl von 16384 Spalten geht das über die Reihung von Spaltenbuchstaben(ketten).

Weiter habe ich mich aber nicht damit beschäftigt.
Antworten Top
#3
(17.01.2026, 16:35)RPP63 schrieb: 15800--538-3542-144--14579--697-13--4464-144-13365-9146-253-86--39--12883-514-33
oder auch
607-18--13993-4217-14--14579--26-559--171-12312-13365-351-13773-86--39--495-357-13553
was das Gleiche bedeutet. Smile
Es gibt nahezu unendlich viele verschiedene Verschlüsselungsmöglichkeiten

15800--538-3542-144--14579--697-13-6-10613-9978-1027-13773-86--39--12883-13365-7
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Antworten Top
#4
Fast! Wink
da fehlt noch ein Worttrenner:
15800--538-3542-144--14579--697-13--6-10613-9978-1027-13773-86--39--12883-13365-7

Ich bin gerade dabei, mal den Copilot in Anspruch zu nehmen.
Thema:
Baue einen formelbasierten Automatismus, der ein Wort in Blöcke von 1 bis 3 Buchstaben zerlegt.
Für das Wort Forenstammtisch wären das mal eben 5768 Möglichkeiten …
"Wir" sind aber noch bei den Basics.
=LET(
    n; LÄNGE("Forenstammtisch");
    WENN(
        n = 0;
        1;
        WENN(
            n = 1;
            1;
            WENN(
                n = 2;
                2;
                LET(
                    col; REDUCE(
                        {1; 1; 2};
                        SEQUENZ(n - 2);
                        LAMBDA(acc; x;
                            VSTAPELN(
                                acc;
                                SUMME(
                                    INDEX(acc; ZEILEN(acc));
                                    INDEX(acc; ZEILEN(acc) - 1);
                                    INDEX(acc; ZEILEN(acc) - 2)
                                )
                            )
                        )
                    );
                    INDEX(col; n + 1)
                )
            )
        )
    )
)

Der besagte Satz bietet also 422.309.888 verschiedene Verschlüsselungsmöglichkeiten.
ABCDEFGH
1WirsehenunszumForenstammtischamSamstag
2413445768244422.309.888

ZelleFormel
A2=NACHSPALTE(1:.1;LAMBDA(n;LET( n; LÄNGE(n); WENN(n=0; 1; WENN(n=1; 1; WENN(n=2; 2; LET( col; REDUCE( {1;1;2}; SEQUENZ(n-2); LAMBDA(acc;x; VSTAPELN( acc; SUMME( INDEX(acc; ZEILEN(acc)); INDEX(acc; ZEILEN(acc)-1); INDEX(acc; ZEILEN(acc)-2) ) ) ) ); INDEX(col; n+1) )))) )))
H2=PRODUKT(A2#)
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#5
Oh ja, das habe ich übersehen.

M F

Das Leerzeichen in der Mitte. Da habe ich momentan keine Idee.

PS:
Auf eine eventuelle Nachfrage deinerseits nach dem Code hätte ich dann geantwortet:
"Ich habe einfach mal ein paar Chatbots gefragt."
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Antworten Top
#6
Ich habe es mal mit G und C probiert.

C schlägt vor:
Code:
=TEXTKETTE(MAP(TEXTTRENNEN(A1;"";WAHR);LAMBDA(c;WENN(c="";"-";SPALTE(INDIREKT(c&"1")))));"-")

Auch in der Variante mit mehr Nachdenken bleibt C dabei.

G schlägt eine ähnliche Lösung vor:
Code:
=TEXTKETTE(MAP(TEXTTEILEN(A1;" ");LAMBDA(wort;WENN(wort="";"";SPALTE(INDIREKT(wort&1))&"-"))))

Mit mehr Nachdenken kommt dann:
Code:
=TEXTVERBINDEN("-";FALSCH;MAP(TEXTTEILEN(A1;"-";;0);LAMBDA(x;WENN(x="";"";SPALTE(INDIREKT(x&1))))))



=TEXTKETTE(               MAP(TEXTTRENNEN(A1;"";WAHR);LAMBDA(c;   WENN(c="";  "-";SPALTE(INDIREKT(c&"1"))     )));"-")
=TEXTKETTE(               MAP(TEXTTEILEN( A1;" ");    LAMBDA(wort;WENN(wort="";"";SPALTE(INDIREKT(wort&1))&"-"))))
=TEXTKETTE(               MAP(TEXTTRENNEN(A1;"";WAHR);LAMBDA(c;   WENN(c="";  "-";SPALTE(INDIREKT(c&"1"))     )));"-")
=TEXTVERBINDEN("-";FALSCH;MAP(TEXTTEILEN( A1;"-";;0); LAMBDA(x;   WENN(x="";  ""; SPALTE(INDIREKT(x&1))       ))))

Beide benutzen wohl die selben Quellen zur 'Inspiration'.


EDIT:
G möchte übrigens in der zweiten Variante dass der Eingabetext schon die Trennzeichen enthält.
WIR--TR-EFF-EN--UNS--ZU-M--FOR-EN-STA-MMT-IS-CH--AM--SAM-ST-AG
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Antworten Top
#7
Was G alles so will …
TEXTTRENNEN und TEXTVERBINDEN hat der Bot halluziniert, da nicht existent!
Pfeif drauf!
Wobei SPALTE(INDIREKT(c&"1")) bei mir ählich ist ist, ich verzichte nur auf die "" → SPALTE(INDIREKT(x&1))

Mal ein Zwischenstand, bin gerade dabei, zu obfuskieren.  19
Um die Spaltenbegrenzung nicht gleich ins Auge springen zu lassen:
226618-126388-3508-3373--117538-5323--83338-7828--373-56173--163-178-1243--103498-15613--18373--13-3538--127558-7678-5518

Ich hänge mal die Dechiffrier-Datei an.
A2 ist leer und zur Dechiffrierung vorgesehen.

Per Boten wird Dir als berechtigter Person folgender "Geheimcode" übermittelt:
Trage in A2 folgende Formel ein:
=DeChiff(15;47)


Angehängte Dateien
.xlsx   DeChiff.xlsx (Größe: 8,86 KB / Downloads: 8)
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#8
Moin!
Mal ohne Obfuskation:
Das Wort Abend bietet mit den jeweils gleichen Formeln 13 verschiedene Möglichkeiten der (De-)Chiffrierung.
In den Spalten C:G stehen die möglichen Wortfragmente mit 1 bis 3 Buchstaben.

ABCDEFGHI
1WortABENDChiffrierungDeChiff
2Möglichkeiten13ABEND1-2-5-14-4ABEND
3ABEND28-5-14-4ABEND
4ABEND1-57-14-4ABEND
5ZufallABEND1-2-144-4ABEND
628-3748ABEND1-2-5-368ABEND
7ABEND28-144-4ABEND
8ABEND28-5-368ABEND
9ABEND1-1496-4ABEND
10ABEND1-57-368ABEND
11ABEND1-2-3748ABEND
12ABEND28-3748ABEND
13ABEND733-14-4ABEND
14ABEND733-368ABEND

ZelleFormel
H2=TEXTVERKETTEN("-";1;NACHSPALTE(C2:G2;LAMBDA(x;WENNFEHLER(SPALTE(INDIREKT(x&1));""))))
I2=TEXTKETTE(NACHSPALTE(TEXTTEILEN(H2;"-");LAMBDA(x;WENNFEHLER(TEXTVOR(ADRESSE(1;x;2);"$");" "))))
A6=INDEX(H:H;ZUFALLSBEREICH(2;B2+1))

Mein Zwischenziel ist, die Liste der möglichen Wortfragmente mittels Formel zu spillen.
Als Vereinfachung:
Bilde eine Matrix, dessen Zeilensumme jeweils 5 ergibt, wobei die Summanden nur die Zahlen 1, 2, 3 enthalten dürfen.
KLMNO
15
211111
31112
41121
5113
61211
7122
8131
92111
10212
11221
1223
13311
1432

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#9
Hallo Ralf,

anbei eine mögliche Formel, die Dir die Matrix ausrechnet und auch die Zerlegung durchführt. Dabei sei angemerkt,
dass das wohl nur für recht kurze Wörter funktionieren wird, da fnMatrix zunächst alle Kombinationen ausrechnet,
was Excel durchaus ordentlich beschäftigen kann, falls es nicht aufgibt. Danach werden dann die Kombinationen
herausfiltert, wo die Quersumme dann der Länge des Wortes vnWort entspricht.
Mit vnAusgabe kannst Du bestimmen, was ausgegeben werden soll. 

Code:
=LET(vnWort; C2;
     vnMax; 3;
     vnAusgabe; 3;
     fnMatrix; LAMBDA(N;K;
       LET(F; LAMBDA(X; LAMBDA(X));
           A; SEQUENZ(K + 1; 1; 0; 1);
           M; LET(X; SEQUENZ(ZEILEN(A) ^ N; 1; ZEILEN(A) ^ N - 1; -1) * SEQUENZ(1; N; 1; 0);
                  Y; SEQUENZ(ZEILEN(A) ^ N; 1; 1; 0) * ZEILEN(A) ^ SEQUENZ(1; N; N - 1; -1);
                     INDEX(A; 1 + REST(ABRUNDEN(X / Y; 0); ZEILEN(A)); 1));
           T; WECHSELN(NACHZEILE(M; LAMBDA(X; INDEX(F(TEXTVERKETTEN(""; 1; X))(); 1; 1))); 0; "");
           D; INDEX(M; VERGLEICH(EINDEUTIG(T); T; 0); SEQUENZ(1; SPALTEN(M)));
           Q; NACHZEILE(D; LAMBDA(X; SUMME(X)));
           V; FILTER(D; Q = N; 0);
              MAP(SEQUENZ(ZEILEN(V); 1; ZEILEN(V); -1) * SEQUENZ(1; SPALTEN(V); 1; 0);
                  SEQUENZ(ZEILEN(V); 1; 1; 0) * SEQUENZ(1; SPALTEN(V));
                  LAMBDA(X;Y; INDEX(V; X; Y)))));
     fnText; LAMBDA(M;
       WEGLASSEN(REDUCE(""; SEQUENZ(ZEILEN(M)); LAMBDA(A;V;
         LET(D; INDEX(M; V; 0);
             P; WEGLASSEN(SCAN(0; HSTAPELN(1; D); LAMBDA(X;Y; SUMME(X + Y))); 0; -1);
             T; WENN(D > 0; TEIL(vnWort; P; D); "");
                VSTAPELN(A; T)))); 1));
     vnMatrix; fnMatrix(LÄNGE(vnWort); vnMax);
     WAHL(vnAusgabe; WECHSELN(vnMatrix; 0; ""); fnText(vnMatrix); HSTAPELN(WECHSELN(vnMatrix; 0; ""); fnText(vnMatrix))))

Hatte ja zuerst überlegt, rekursive LAMBDAs zu verwenden, die jedoch zu sehr limitiert sind und somit
nicht so wirklich funktioniert haben; also habe da jedenfalls keine Lösung gefunden.

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awards
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Antworten Top
#10
Moin

Zitat:#8   Mein Zwischenziel ist, die Liste der möglichen Wortfragmente mittels Formel zu spillen.
Hier noch mal eine Version dazu. Die beiden Formeln kannst du natürlich in eine Verwursteln.

Wort steht in R1.
Die Formel in R3.
Code:
=LET(Wort;R1;ANZK;LÄNGE(Wort);GB;{1;20;300};F;LAMBDA(FRef;GBRef;WECHSELN(LET(S;MAP(GBRef;LAMBDA(x;WENN(LÄNGE(x)<ANZK;TEXTVERKETTEN("#";1;x&WEGLASSEN(GB;MIN(0;ANZK-LÄNGE(x)-3)));x)));KF;ZUSPALTE(MATRIXERSTELLEN(ZEILEN(S);3;LAMBDA(r;c;WENNFEHLER(INDEX(TEXTTEILEN(INDEX(S;r;1);"#");1;c);#NV)));2);WENN(LÄNGE(INDEX(KF;1;1))<ANZK;FRef(FRef;KF);KF));"0";""));F(F;GB))

Die in S3.
Code:
=LET(U;R3#;w;R1;MATRIXERSTELLEN(ZEILEN(U);LÄNGE(w);LAMBDA(r;c;WENNFEHLER(TEIL(w;SUMME(--TEIL(1&INDEX(U;r;1);SEQUENZ(c);1));TEIL(INDEX(U;r;1);c;1));""))))

Gruß Elex
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste