Minulla on merkkijono salattu Mcrypt-fuktiolla.
Jostakin syystä tietokantaan tallennus muutta hiukan salattua merkkijonoa.
Syötetyssä SQL-lausessa salaus on vielä oikein.
Kentän tyyppi on varbinary, joten siinä ei pitäisi olla ongelmia. Ja onhan se yleensä toiminut oikein.
Miten tuota merkkijonoa voisi käsitellä? bindValue metodi näyttäisi olevan vain kannasta saapuvan parsimiseen... en ainakaan keksi miten se sovelletaan päivitykseen. Teen sen näin:
<?php $dbh->exec($sql); ?>
Ps 1. Höh. Tämä oli pelkkä testi:
$lause="UPDATE taulu SET field='".bin2hex($string)."' WHERE id='243'";
Mutta yllätys(minulle), se tallensi oikein. En ole vielä testannut, toimiiko sen onkiminen sieltä ymmärrettävään muotoon, mutta luulisin että sekin on ok.
Ps2. Eipä näyttäisi toimivan oikein... se on kannassa oikeesti sellaisena miltä näyttää, bin2hex-muodossa eikä cryptattuna. Joten sitä ei voi mcryptilla purkaa takaisin..
Ps 3. Tuolla "Ps 1:llä" muuten tarkistin, että sen salauksen ulkoasu on oikein, eli sama kuin mcryptattu bin2hex($_POST['merkkijono']).
Ongelmallinen "testisana", joka tässä ei toimi, on muuten nimeltään "maili", jos joku haluaa itse sitä testata. Vaikka salausavainkin tietysti vaikuttaa siihen, mitä siitä lopulta tulee.
Tämä olisi hyvä saada varman päälle toimimaan kaikilla mahdollisilla sanoilla.
Tallenna se kantaan oikein, niin se tallentuu oikein. Tekstejä ei pidä lisätä kyselyyn suoraan, kuten tuossa Ps 1 -koodissasi teet.
Kiitos paljon!
Mistähän minä tuon exec-jutun olen poiminut... tuskin ihan itse olen sitä keksinyt. No nyt alkaa toimimaan jälleen.
Aihe on jo aika vanha, joten et voi enää vastata siihen.