String encryption met wachtwoord

Door Toby hinloopen, 19 jaar geleden, 8.519x bekeken

Een groepje functies die samen een encryptie functie hebben.

Encryptie vereist geen wachtwoord.
Bij het invullen van geen wachtwoord wordt de string niet ge-encrypt.
Wachtwoord wordt niet opgeslagen in de string.
String alleen te lezen met wachtwoord, ontcijferen wordt erg lastig.

Functies niet gecheckt op notice-errors.

Voorbeeld is snel in elkaar gezet.

Kleine omschrijving hoe encryptie in zn werk gaat:

-converteer input naar binair.
-maak MD5 van wachtwoord en zet de output om in binair. (128 bits)
-vergelijk wachtwoord-binair met input-binair.

schematisch voorbeeld van de werking:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
PASSWORD: 000100010011100000
INPUT:    110001001110111010
             |   |  |||
             v   v  vvv
OUTPUT:   110101011101011010


Wat er gebeurt: als een bitje in wachtwoord gelijk is aan '1', dan veranderd ie het bitje bij INPUT op dezelfde positie. Als bitje 1 is bij input, wordt deze 0. Als bitje 0 is wordt deze 1.
Als het bitje in het wachtwoord '0' is, doet het niets.

Indien de input langer is dan het wachtwoord (langer dan 16 tekens) begint ie weer bij bit 0 van het wachtwoord en gaat zo weer opnieuw alle 128 bits bij langs.

Omdat ie simpelweg van een 1 een 0 maakt en van een 0 een 1, werkt de functie ook omgekeert. Daarom kan je decrypten EN encrypten met dezelfde functie en dezelfde manier.

-zet 'output' terug naar STRING.
-return output.

Voorbeeld: http://www.levensweg.net/files/encrypt.php

Gesponsorde koppelingen

PHP script bestanden

  1. string-encryption-met-wachtwoord

 

Er zijn 21 reacties op 'String encryption met wachtwoord'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Jelmer -
Jelmer -
19 jaar geleden
 
0 +1 -0 -1
Als je nog even base64_encode over de output haalt, dan is hij ook knip- en plakbaar :) Maar helaas heb je dan wel een 2e functie (of een schakeltje) nodig om te bepalen of je _encode of _decode nodig hebt.
GaMer B
GaMer B
19 jaar geleden
 
0 +1 -0 -1
Dit is toch eigelijk niets anders dan XORen van een input met behulp van een ander woord?
Toby hinloopen
toby hinloopen
19 jaar geleden
 
0 +1 -0 -1
Wat was XOR ook alweer? :P

A OR B, maar niet A AND B toch?

hoe dan ook, zo werkt het if/else systeem:

if PASSWORDBIT === 1 && STRINGBIT=== 1
STRINGBIT= 0
else if PASSWORDBIT === 1 && STRINGBIT===0
STRINGBIT= 1
else
STRINGBIT= STRINGBIT
GaMer B
GaMer B
19 jaar geleden
 
0 +1 -0 -1
1 xor 1 = 0
1 xor 0 = 1
1110 xor 1001 = 0111

Als beiden bits gelijk zijn, krijg je 0 uit de xor. Als een bit verschilt van 'waarde' dan krijg je 1 uit de xor.
Wouter De Schuyter
Wouter De Schuyter
19 jaar geleden
 
0 +1 -0 -1
Werkt niet correct, ik kan het omvormen maar als ik terug probeer om te vormen krijg ik niet hetzelfde woord van wat er stond..

Ik had Paradox geencrypt met 0123456789ABCDEF en als ik decrypt krijg ik ParfBúS/..
Toby hinloopen
toby hinloopen
19 jaar geleden
 
0 +1 -0 -1
@paradox:

er staat een dikke vette mega warning dat het kopieren niet lukt ivm. niet-kopieerbare-tekens. Het is niet de bedoeling dat je het gaat copy-pasten maar direct schrijft naar database of bestand en op dezelfde manier ook weer direct inleest.

Helemaal onderaan staat FAIL als het echt niet gelukt is, SUCCES als het encrypten wel gelukt is.

Overigens, als ik het probeer met hetzelfde input + password staat er bij mij:

"Decryption of Encrypted string: SUCCES".
En ik zie tekens die je niet kan kopieren.

Het ligt dus niet aan het script, maar aan het voorbeeld.
Han eev
Han eev
19 jaar geleden
 
0 +1 -0 -1
Even voor het idee, dit is XOR'en, en eigenlijk is XOR'en zelf geen ecryptie.
Want er worden alleen wat bits veranderd, als je sleutel erg zwak is kan je gewoon stukken tekst weer ophalen. Dus dat klopt niet. En dit kan ook sneller.
ord($letter) ^ ord($password) enz... ;)

Een echte encryptie gooit ook nog alles door elkaar en moet er echt niets meer te herkennen zijn van de orginele input.
GaMer B
GaMer B
19 jaar geleden
 
0 +1 -0 -1
@Han, dat is wat ik zei :P
Toby hinloopen
toby hinloopen
19 jaar geleden
 
0 +1 -0 -1
@han: sleutel is nooit zwak, tenzij jij 128 bits zwak vind.

En zo in-efficient is het script niet. Mijn script doet het op binair niveau, jouw voorbeeld rekent het om naar decimaal en niet binair. Dan zal je alsnog het moeten omzetten naar binair en dan weer terug. Of je nou in 1x alles omzet naar binair of 1 voor 1 omzet naar binair... zoveel zal het niet schelen.

Het is geen prijswinner in snelheid en efficientie... maarja.

als je alles door elkaar gooit, hoe weet je de originele volgorde dan?

behalve met de 'ik raad het wachtwoord gewoon' methode lijkt het mij vrijwel onmogelijk om het te ontcijferen, maar succes ermee.

Hier is een string met een supersimpel wachtwoord bestaande uit 1 teken. Met het ik-raad-het-wachtwoord-methode kom je er wel, maar... zonder het raden van het wachtwoord...?

vertel er op zn minst bij hoe je het hebt gedaan, áls je erachter komt wat het origineel was en eventueel wat het wachtwoord was. Houdt hierbij rekening: het is dus de bedoeling dat je achter de originele tekst komt ZONDER het wachtwoord te RADEN.

De code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$Av+"2MLL5N4p(}


De code is 100% copy-paste-able, ik heb het zelf getest door de code te kopieren vanuit deze website naar mijn voorbeeld, het goede wachtwoord ingevult en bekeken of de output correct was. Was gelukt, kreeg originele tekst weer.

Het is overduidelijk te zien als je het goede wachtwoord hebt. Er komt namelijk een zin te staan waarin staat dat je de originele tekst weer hebt gevonden.
Han eev
Han eev
19 jaar geleden
 
0 +1 -0 -1
@toby hinloopen:

Ik denk dat het wel redelijk veilig is wat jij nu hebt, maar stel je voor:
Je kiest als wachtwoord ________ (8x _, niet echt sterk, maar stel) dat is in bits.

01111111 x 8. Als je daarmee gaat xorren, is de output redelijk onvoorspelbaar. Ik zie dat je er ook nog een md5 over heen haalt, dus dan is het al een stuk moeilijker, maar xor blijft geen encryptie, en het probleem van jou encryptie is ook nog dat als het teken groter dan de 32 tekens van de md5 is dat hij weer teken 1 gaat gebruiken. Herhaling dus, herhaling betekent zwak, dus in de meeste gevallen gaat dit goed, maar een goed encryptie systeem moet ook met zwakke wachtwoorden overweg kunnen. En dit blijft geen encryptie.

Ook wat jij zegt over 128 bits slaat hier helemaal nergens op, omdat je met die 128 bits helemaal niets doet, je gaat het md5'en, daarmee doe je wat! En neem maar van mij aan dat 128bits niet sterk is.

Ook wat je zegt dat jou manier efiecienter is dat mijn manier slaat helemaal de kop mis, want waarvoor zijn anders die operatoren? Jij gaat het eerst converteren naar een string en dat vergelijken. Wat met jou gebeurd is dit:
letter -> getal -> letter (alleen 0 en 1) -> getal (vergelijken) -> daarna weer letter van maken in een string, en dat weer knippen -> binaire string van 8 bits -> cijfer -> letter. Ja dat is snel zeg!

En zoals jij eerst decbin doet is ook niet goed, daar hebben de bitwise operatoren voor, zoals: ^, &, | en ~.

Je systeem is zeker te breken als je maar genoeg tekst hebt, want het blijft voorspelbaar omdat je herhaling gebruikt.

@Gamer13: Ik had niet goed doorgelezen ;-)
Nicoow Unknown
Nicoow Unknown
19 jaar geleden
 
0 +1 -0 -1
dingen omzetten naar binair is eigenlijk het stomste wat je kan doen, omdat binair ook een hele vervelende vorm van afronding kent, waardoor je hele andere gegevens terug kan krijgen.
Laat het binair rekenen lekker door je pc doen, en ga er zelf niet mee lopen kloten.
Toby hinloopen
toby hinloopen
19 jaar geleden
 
0 +1 -0 -1
Het is ook niet de bedoeling dat je de lanceercodes van kernbommen erin gaat gooien :P

ik las wat over bitwise operatoren, dus ik ga even googlen.
GaMer B
GaMer B
19 jaar geleden
 
0 +1 -0 -1
@toby hinloopen, als je dit omzet in bitwise encryption dan zeg ik: Thumbs up! In combinatie met shiften (<< of >>) en bitwise oprators (^, &, | en ~) is een sterke encryptie.
Toby hinloopen
toby hinloopen
19 jaar geleden
 
0 +1 -0 -1
@gamer: zodra ik me weer verveel ga ik het hele script re-designen met de bitwise operators. dan moet ie sneller gaan.
Wouter De Schuyter
Wouter De Schuyter
19 jaar geleden
 
0 +1 -0 -1
Vind er toch maar nix aan als je de geencode string niet meer juist kan decoden..

Afbeelding
http://file-hosting.paradox-productions.net/files/1/encryption%26decryption....avi
Hipska BE
Hipska BE
19 jaar geleden
 
0 +1 -0 -1
Dommerik, je moet beetje lager kijken, daar wordt de encrypte code terug gedecrypt, en ik zie daar dan echt wel weer PARADOX staan :D
Wouter De Schuyter
Wouter De Schuyter
19 jaar geleden
 
0 +1 -0 -1
Heb ik ook wel gezien maar stel dat je je string encrypt en slaat hem op je pc op in een txt en wil hem dan ooit is later weer decrypten omdat je de informatie uit die string weer nodig hebt en dan krijg je zo iets..
GaMer B
GaMer B
19 jaar geleden
 
0 +1 -0 -1
Ik vind deze encryptie niet gebruiksvriendelijk daar ben ik het helemaal met Paradox mee eens.

EDIT:
@Paradox, hoe heb je dat met dat plaatje gedaan? Is wel handig.
Hipska BE
Hipska BE
19 jaar geleden
 
0 +1 -0 -1
Jullie 2 hebben blijkbaar niet genoeg ervaring op dit gebied, dit is zeer duidelijk te merken aan jullie uitspraken.

Encrypte strings hebben niet altijd tot doel om opgeslaan worden in een textbestand.

Trouwens staat er in het voorbeeld ook dat je het moet omvormen naar hex code of binair wil je het gaan kopieren.
GaMer B
GaMer B
19 jaar geleden
 
0 +1 -0 -1
@Hipska... mag hopen dat 't niet te merken is aan mijn uitspraak want ik weet wel degelijk waar ik het over heb.

Als in deze encryptie het nou meteen in HEX vorm werd gegoten, dan kon ik er mee inkomen.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Hipska BE
Hipska BE
19 jaar geleden
 
0 +1 -0 -1
Dat staat toch vetgedrukt in het voorbeeld ook? En wat houdt je tegen om zelf snel even zo'n functie er bij te voegen?

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. string-encryption-met-wachtwoord

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.