Verschlüsselung
Übersicht

![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Harrgott, das läuft hier ganz schön aus dem Ruder.
Für normale Anwendungen reichen die Verschlüsselungen wie sie hier genutzt werden mehr als aus. Ich hab nicht vor in meinen Programmen die Geheimnisse der Menschheit, den Inhalt der Katakomben des Vatikans oder George W. Bushs Kontoauszüge unterzubringen. 99% der Leuts die etwas von mir in die Finger bekommen es nur nutzen. Das letzte Prozent wird neugierig schnüffeln, und davon wird vielleicht wieder 1 % was machen können. So what? Wir schreiben hier bestenfalls casual Games. Dafür reichts locker. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
antome!!! gesperrt !!! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das triff aber auf mein Spiel nicht zu, da ein Hauptanreiz dabei liegt Daten per Email zu tauschen.
Auch liegt ein hautsächlicher Reiz in einer von mehreren Highscoretabellen aufgefürt zu werden. Da kann ein Cheater reichen um mehreren dutzend Spielern die Freude zu verderben. Ich glaube es gibt keinen Schutz wenn der Schlüssel letztendlich im Spielcode selber versteckt ist. Ich kann mir nur vorstellen es den Spielverderbern so schwer wie möglich zu machen indem ich eine verschachtelte Verwirrungstaktik bei der Verschlüsselungszeremonie im Code verwende. Ich habe bisher auch keine Seite mit Algos gefunden, man findet 1000de von Seiten in denen darüber geschrieben wird, aber nichts zu sehen wie der aufgebaut ist. Hat evtl. jemand einen Link ? |
||
antome |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
antome hat Folgendes geschrieben: dies ist eine erstgemeinte Frage auch wenn sie sich anhört als hätte ich nicht lange genug darüber nachgedacht.
Warum kein ein Profi dann nicht den hochkomplizierten Algorhytmus mitsamt Key aus einem Programm rausholen. was ist daran sicherer ? In meinem Fall wären es nur Spieldaten, welche aber nicht verändert werden dürfen. Profis gibt es sicher auch unter den Cheatern. Der Algo als solches ist eigentlich nicht sicher, jeder kann ihn sich anschauen etc. Der sichere Anteil ist, das er zum Knacken deiner Daten (da man den Key ja nicht hat) etwa 4 Millionen Jahre bei den aktuellen Computersystemen brauchen, weil man für Verschlüsselung Operationen nimmt, die aktuell nicht effizient zu handhaben sind, die aber "kinderleicht zu designen und implementieren" sind ![]() BladeRunner: Hat ja auch niemand gesagt, das man das braucht. Es ging um die Sicherheit, nicht um "wie sinnvoll ist es" ![]() Das niemand mit den HighEnd Verschlüsselungen in Spielen auffährt ist klar und das alleine schon aus nem simplen Grund: Die Spiele sollen brauchbare Ladezeiten haben und das liegt nicht drin wenn man tausende von Exp und Potenzaufrufe drin hat bei jeder Datei die man laden will. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
pixelshooter |
![]() Antworten mit Zitat ![]() |
---|---|---|
Warum macht ihr euch alle wolche arbeit?! RSA algo funzt doch und wem das zu langsam ist, der nimmt dann die pgp-variante (nur schlüssel rsa-verschlüsseln). | ||
>> Musikerstellung, Grafik und Design: http://www.pixelshooter.net.tc |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
soo, sorry das ich solange gebraucht hab, aber der ich hatte sehr viel um die Ohren, ausserdem hab ich den scheiß fehler immer noch nicht ganz draussen.
Naja hier erstmal mein "toller" algo: Code: [AUSKLAPPEN] de$=DeCryptString("Hallo!","password") en$=EnCryptString(de$,"password") Print de Print en Function DeCryptString$(strg$,password$) Local newstrg$="" Local key%=0 Local lenght%=Len(password$) For i = 1 To lenght key=key+Asc(Mid(password$,i,1))*i Next SeedRnd key For i=1 To Len(strg) SeedRnd (Asc(Mid(password$,(i Mod lenght)+1,1))+Rand(-key,key)) random=Rand(-key,key) newstrg$=newstrg$+Chr(Asc(Mid(strg,i,1))+random) Next Return newstrg$ End Function Function EnCryptString$(strg$,password$) Local newstrg$="" Local key%=0 Local lenght%=Len(password$) Local shortstrg$=strg$ For i = 1 To lenght key=key+Asc(Mid(password$,i,1))*i Next SeedRnd key For i=1 To Len(strg) SeedRnd (Asc(Mid(password$,(i Mod lenght)+1,1))+Rand(-key,key)) random=Rand(-key,key) newstrg$=newstrg$+Chr(Asc(Mid(shortstrg,i,1))-random) Next Return newstrg$ End Function Bei so kleineren sachen, oder auch bei: Code: [AUSKLAPPEN] Hallo! Das ist meine Geniale Verschlüsselung! Toll oder? Gehts nun auch in arsch? gehts perfekt, aber beim längeren Text wurde aus: Code: [AUSKLAPPEN] Verschlüsselung nennt man den Vorgang, bei dem ein Klartext mit Hilfe eines Verschlüsselungsverfahrens (Algorithmus) in einen Geheimtext umgewandelt wird. Als Parameter des Verschlüsselungsverfahrens werden ein oder mehrere Schlüssel verwendet. Das Forschungsgebiet, das sich mit der Verschlüsselung und ihrer Geschichte beschäftigt, wird als Kryptografie bezeichnet. usw. das: Code: [AUSKLAPPEN] Verschlüsselung nennt man den Vorgang, bei dem ein Klartext mit Hilfe eines Verschlüsselungsverfahrens (Algorithmus) in einen Geheimtext umg%Õàiê¦x#Âé›Ý®Wª¡Š -¦-.�UYsa�¢‰8!HŒ0;B–ؼW¹¸¿(ÜËÒ$ECM‹k·ÏDö ãúV»AÅ$ê-µs3Ý\³_C¯¾Ar�“]}‡Ú–—%”ñIÄò/ò›s.àÎþrJÕ’k˜ã\ÅIJ‰†‰L•<Ð, LØÎT™Ç Íì0K~"dH#ó�”’:ŽSÔoe„ÚÞ®ž Dû•…xe`õø0ëÿ»Äí) ÁCn_Ì#Í–FD€ø‡¦ü#k)6feÝl¸5 Û und noch mehr kryptisches... ![]() MfG |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
![]() |
Triton |
![]() Antworten mit Zitat ![]() |
---|---|---|
Auf einen flüchtigen Blick sehe ich, dass du das Zufällig erscheinen lassen willst, in dem du...den Zufall einbaust:
Code: [AUSKLAPPEN] SeedRnd key ... [{...]1,1))+Rand(-key,key)) Das ist zwar eigentlich keine schlechte Idee - in der Tat aber gibt es 2. Schwächen: 1. Dieser Zufallsalgorithmus ist glaube ich nicht immer eindeutig mit dem selben Übergabewert. Warum das so ist, wurde irgendwo früher mal im Forum ergründet und geklärt. Müsste man mal suchen. 2. Der Übergabewert für Seedrnd ist ein Integerwert welcher maximal den Wert 2^31 annehmen kann. Ich habe mir den Rest des Algos nicht genauer angeschaut, aber wenn man im Mittel nur 2^30 Varianten mit Bruteforce durchtesten müsste, wäre das ganze in maximal wenigen Minuten geknackt. Aber erklär doch mal mit eigenen Worten, was das Ding macht. Ich habe jetzt keine Lust das einzeln nachzuvollziehen, würde aber wohl gerne verstehen, was du dir gedacht hast. Womöglich findet man so auch schon Schwachstellen ![]() |
||
Coding: silizium-net.de | Portfolio: Triton.ch.vu |
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich hab mich mal an einem durchprobier algo versucht, jedoch haut das nicht so ganz hin, denn:
der algo müsste zwei werte zu je 2^31 überprüfen, macht also 4611686018427387904 Werte. Und da braucht jeder PC ewig. Gibts ne bessere Variante? |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
erklärung:
Code: [AUSKLAPPEN] For i = 1 To lenght key=key+Asc(Mid(password$,i,1))*i Next einen (fast) einmaligen Key aus dem Passwort machen. Code: [AUSKLAPPEN] SeedRnd key For i=1 To Len(strg) SeedRnd (Asc(Mid(password$,(i Mod lenght)+1,1))+Rand(-key,key)) die zufallswurzel auf den Key setzen ( bei gleicher wurzel gleiche abfolge von zufallszahlen), for schleife einleiten, zufallswurzel auf ein zeichen des passworts + eine zufallszahl setzen Code: [AUSKLAPPEN] random=Rand(-key,key) newstrg$=newstrg$+Chr(Asc(Mid(strg,i,1))+random) Next Return newstrg$ Zufallszahl holen und zum aktuellen AscII-Wert addieren, daraus wieder ein zeichen machen und an den neuen string hängen... das so lange bis der string durch ist, dann newstring zurück geben. Idee ist mir letztens einfach so gekommen, dass man die Zufallsfunktion ja dazu missbrauchen könnte... dann das ganze noch ein bissl optimiert und dann kam das bei raus. Bin nun grad noch dabei Fakezeichen einzubauen, gibt aber dabei noch n paar probleme... MfG |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
![]() |
Triton |
![]() Antworten mit Zitat ![]() |
---|---|---|
So wie ich das sehe, ist es sehr unsicher:
Zitat: einen (fast) einmaligen Key aus dem Passwort machen.
Naja, eigentlich ist es nichtmal fast einmalig. Bsp: Code: [AUSKLAPPEN] Pw: ((( -> key = 40+80+120=240 Pw: (+& -> key = 40+86+114=240 Pw: ##- -> key = 35+70+135=240 ... Es gibt also sehr viele Möglichkeiten, irgend einen korrekten Key zu finden, der den Klartext liefert. Und den ganzen Rest den du macht (etwa alles mögliche dazuaddieren), kann man ja auch einfach zurückverfolgen, wenn ich das richtig sehe. |
||
Coding: silizium-net.de | Portfolio: Triton.ch.vu |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
das "gag" ist, das wenn man den key hat, noch lange nicht das Passwort hat, da der SeedRnd immer auf einen Buchstaben dess Passworts von vorn nach hinten gesetzt wird, heißt wenn man ((( als Passwort hat und per Entschlüsselung (+& herraus bekommt, dann ist der kommt trotzdem nur scheiße am ende raus. Ausserdem bin ich mir nicht sicher ob du die Multiplikation mit I bedacht hast...
MfG |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
mal was anderes!
zum durchprobieren: Code: [AUSKLAPPEN] de$=DeCryptString("Hallo!","password")
r=0 t1=MilliSecs() For a=1 To 26 For b=1 To 26 For c=1 To 26 For d=1 To 26 For e=1 To 26 For f=1 To 26 For g=1 To 26 For h=1 To 26 s1$=Chr(a+96) s2$=Chr(b+96) s3$=Chr(c+96) s4$=Chr(d+96) s5$=Chr(e+96) s6$=Chr(f+96) s7$=Chr(g+96) s8$=Chr(h+96) en$=EnCryptString(de$,s1$+s2$+s3$+s4$+s5$+s6$+s7$+s8$) If en$=de$ Then Goto found If KeyHit(57) Then Print s1$+s2$+s3$+s4$+s5$+s6$+s7$+s8$ r=r+1 Next Next Next Next Next Next Next Next .found t2=MilliSecs()-t1 Print "Found after "+r+" tries!" Print "Found after "+t2/1000+" seconds!" Print de Print en WaitKey End Function DeCryptString$(strg$,password$) Local newstrg$="" Local key%=0 Local lenght%=Len(password$) For i = 1 To lenght key=key+Asc(Mid(password$,i,1))*i Next SeedRnd key For i=1 To Len(strg) SeedRnd (Asc(Mid(password$,(i Mod lenght)+1,1))+Rand(-key,key)) random=Rand(-key,key) newstrg$=newstrg$+Chr(Asc(Mid(strg,i,1))+random) Next Return newstrg$ End Function Function EnCryptString$(strg$,password$) Local newstrg$="" Local key%=0 Local lenght%=Len(password$) Local shortstrg$=strg$ For i = 1 To lenght key=key+Asc(Mid(password$,i,1))*i Next SeedRnd key For i=1 To Len(strg) SeedRnd (Asc(Mid(password$,(i Mod lenght)+1,1))+Rand(-key,key)) random=Rand(-key,key) newstrg$=newstrg$+Chr(Asc(Mid(shortstrg,i,1))-random) Next Return newstrg$ End Function wie lange dauert es bei euch? |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
![]() |
SoNenTyp |
![]() Antworten mit Zitat ![]() |
---|---|---|
Habe es nur einige Minuten laufen lassen. Auf meinem 2,8gHz wird er warscheinlich so 30 Stunden brauchen. Ich glaube allerdings das sich da noch so einiges optimieren lässt. | ||
Gruss Der Typ.
User posted image |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
mh ist ja schonmal nicht schlecht, aber es kann SO nicht funktionieren:
Code: [AUSKLAPPEN] en$=EnCryptString(de$,s1$+s2$+s3$+s4$+s5$+s6$+s7$+s8$) If en$=de$ Then Goto found wenn der entschlüsselte der verschlüsselte string ist, dann ist doch etwas grundlegendes an der verschlüsselung blöd ![]() MfG |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
![]() |
Triton |
![]() Antworten mit Zitat ![]() |
---|---|---|
5k41 hat Folgendes geschrieben: das "gag" ist, das wenn man den key hat, noch lange nicht das Passwort hat, da der SeedRnd immer auf einen Buchstaben dess Passworts von vorn nach hinten gesetzt wird, heißt wenn man ((( als Passwort hat und per Entschlüsselung (+& herraus bekommt, dann ist der kommt trotzdem nur scheiße am ende raus.
Naja, trotzdem ist es eine große Schwäche, die die Angriffsmöglichkeiten von Bruteforce enorm erhöht. 5k41 hat Folgendes geschrieben: Ausserdem bin ich mir nicht sicher ob du die Multiplikation mit I bedacht hast...
MfG i wird doch nur nach der länge des Textes ermittelt. Kann man also einfach zurückdividieren. |
||
Coding: silizium-net.de | Portfolio: Triton.ch.vu |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
gut, auf deinen Inständigen Wunsch hab ich nun den Key erstellungs algo überarbeitet... bin nun grad an den PufferZeichen... funtzt auch schon fast ![]() MfG ~Neuigkeiten!~ Code: [AUSKLAPPEN] de$=DeCryptString("Hallo!","password") en$=EnCryptString(de$,"password") Print de$ Print en$ Const BUFFERRATE=10 Function DeCryptString$(strg$,password$) Local newstrg$="" Local key%=0 Local lenght%=Len(password$) For i = 1 To lenght key=2*key+Asc(Mid(password$,i,1))*(i*10) Next Local mask = key Mod BUFFERRATE If mask = 0 Then mask = 1 SeedRnd key For i=1 To Len(strg) SeedRnd (Asc(Mid(password$,(i Mod lenght)+1,1))+Rand(-key,key)) random=Rand(-key,key) newstrg$=newstrg$+Chr(Asc(Mid(strg,i,1))+random) If random Mod mask = 0 Then newstrg$=newstrg$+Chr(Rand(-key,key)) Next Return newstrg$ End Function Function EnCryptString$(strg$,password$) Local newstrg$="" Local key%=0 Local lenght%=Len(password$) Local shortstrg$=strg$ For i = 1 To lenght key=2*key+Asc(Mid(password$,i,1))*(i*10) Next Local mask = key Mod BUFFERRATE If mask = 0 Then mask = 1 SeedRnd key For i=1 To Len(strg) SeedRnd (Asc(Mid(password$,(i Mod lenght)+1,1))+Rand(-key,key)) random=Rand(-key,key) newstrg$=newstrg$+Chr(Asc(Mid(shortstrg,i,1))-random) If random Mod mask = 0 Then If Len(shortstrg$)=>i+1 Then shortstrg$=Left(shortstrg$,i)+Right(shortstrg$,Len(shortstrg)-i-1) Rand(-key,key) EndIf If i = Len(shortstrg$) Then Exit Next Return newstrg$ End Function Der Key sollte nun sicherer sein und es werden Buffer-Zeichen eingebaut... das Problem, dass längere Texte immernoch ab einer bestimmten stelle kaputt gehen, besteht immer noch ( hab herraus gefunden, dass sich die Stelle ab der es Kryptisch wird sich mit dem Passwort ändert!). MfG |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mh, ich glaub ich weiss warum keiner mehr antwortet... in meinem Fall wäre glaub ich ein Doppelpost doch schlauer gewesen als ein Edit... desshalb hier ein push ( nur weil ich vorher keinen Doppelpost machen wollte! )
MfG |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group