Moi!
Idea on, että sivusto lähettää MySQLlään (tai mahdollisesti muuhun) tietokantaan sanan kuten "salainen". "Salainen" muutetaan ennen lähetystä joksikin merkki riviksi, eli se salakirjoitetaan. Kun "salainen" taas haetaan tietokannasta, se pitää palauttaa salakirjoituksesta sanaksi. Miten teen tämän, koska PHPn replacella se ei onnistu. SHA ja MD suojauksia ei voi enää muuttuu takaisin.
Onko idoita? Onnistuisiko se jollain muulla kielle, kuin PHplla? Mutta siten, että tietokantaan voisi listä salakirjoitetua tekstiä selaimenkautta.
Kiitos jo vastauksista etukäteen.
PS: Olen jo n. 1 viikon katsellut netistä miten tämä tehdä, mutta mitään järkevää ei ole löytynyt.... :(
Voit käyttää RSA-salausta. Tämä sivu kertoo aika yksinkertaisesti ja helposti miten salaus toimii.
https://www.cs.utexas.edu/~mitra/honors/soln.
p ja q on alkulukuja.
Googlella kyllä löytyy varmaan valmiita toteutuksia.
Ajattelitko, että jossain olisi myös salasana tuota salausta varten? Jos ei ole salasanaa, ei voi salata. Jos salasana on samassa tietokannassa (tai ylipäänsä palvelimella) kuin salattu tieto, salaus on myös täysin hyödytön.
RSA:ta tai muutakaan salausta ei pidä lähteä toteuttamaan itse, vaan aina kannattaa käyttää valmiita kirjastoja. PHP:ssä valmis salauskirjasto on esimerkiksi mcrypt, josta löytyy tietoa ja esimerkkejä PHP:n sivuilta. Selaimessa taas voi käyttää CryptoJS-kirjastoa.
Tiedon tallentamiseen sopii AES tai muu symmetrinen algoritmi, jossa salaamiseen ja purkamiseen käytetään samaa salasanaa. Sen sijaan RSA ja muut epäsymmetriset algoritmit soveltuvat paremmin tilanteisiin, joissa salaaja ja purkaja ovat eri henkilöt eli on tarkoitus todistaa viestin lähettäjä oikeaksi tai välittää luottamuksellinen viesti tietylle henkilölle.
Tarkoitus olisi, että saisin tehtyä oman salauksen, joka on vain palvelimella. Eli silloin ei tarvitsisi erillistä salasanaa tiedolle. Olisiko tälläinen ratkaisu mahdollista?
Millä tavalla tieto on mielestäsi salaista, jos sen lukemiseen ei tarvita mitään salasanaa? Mitä ajattelet saavuttavasi? Vakiosalauksesta on hyötyä vain siinä tapauksessa, että jostain syystä hakkerit saavat tietokannasta tietoa (mutta eivät saa salauskoodiasi eivätkä onnistu arvaamaan sitä), ja niinhän ei pitäisi ikinä käydä, jos ohjelmoit sivut kunnolla.
Jos tuollainen ”oma salaus” on mielestäsi riittävä, voit ihan hyvin käyttää vaikka jo ehdotettua funktiota str_rot13 tai jotain muuta purkkaviritelmää kuten riviä base64_decode(str_rot13(base64_encode($data))), joka toimii samalla sekä salauksena että purkuna. Kuitenkin kerroin jo äsken, että ei kannata tehdä omaa salausta, eli jos haluat välttämättä salata jotain, käytä edes mcrypt-kirjastoa ja AES-salausta jollain valmiiksi valitulla salasanalla.
Muista, että salattua tietoa ei voi tallentaa tietokannassa tekstinä (TEXT, CHAR) vaan binäärinä (BLOB, BINARY). Lisäksi salaus estää tiedon järkevän käsittelyn tietokannassa, eli et voi hakea rivejä aakkosjärjestyksessä etkä etsiä tiettyä sanaa, vaan joudut hakemaan ja purkamaan kaiken tiedon ja tekemään kaikki toimenpiteet PHP:llä.
Et ihan ymmärtynyt, selitän tarkemmin.
Lähetys:
PHP/Sivut ----> "Salainen" ----> Muunnetaan esim. "nenialaS" ----> lähetetään tietokantaan
Vastaanotto:
Tietokanta ----> teksti palautetaan "nenialaS" takaisin "Salainen" ----> näytetään PHP/sivuilla
Tälläinen ei onnistu normaalilla SHA tai MD suojauksilla.
Kysyn siis, onko olemassa valmista salakirjoitus kirjastoa PHPssa tai muussa.
Tai voiko tehdä itse jollakin toisella kielellä tai mahdollisesti jotenkin PHpssa.
Kyllä ymmärsin ihan täsmälleen, ja annoin tähän vastauksen: käytä mcrypt-kirjastoa ja AES-salausta. Sinä taas et ilmeisesti ymmärtänyt vieläkään, että tuosta salaamisesta ei ole mitään hyötyä.
Juhku kirjoitti:
normaalilla SHA tai MD suojauksilla.
SHA ja MD5 eivät ole suojauksia eivätkä salauksia vaan tiivistefunktioita. Jos vielä käytät niitä esimerkiksi salasanojen käsittelyyn, kannattaa mitä pikimmin siirtyä turvallisempiin funktioihin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.