SQLCipher, SQLite veritabanlarımız için bir şifreleme yazılımıdır. SQLCipher genellikle, dağıttığımız uygulamalardaki SQLite veritabanlarını başkalarının okuyup değiştirebilmesini engellemek amacıyla şifrelemek için kullanılır.
Örneğin bir Android uygulaması yaptınız ve uygulamadaki SQLite veritabanınında başkalarının okumasını istemediğiniz veriler var ya da oyununuzun verilerinin başkaları tarafından değiştirilip hile yapılmasını engellemek istiyorsunuz. O zaman SQLCipher tam size göre.
OpenSSL kuruyoruz (OS X'e göre):
curl -o openssl-1.0.2g.tar.gz https://www.openssl.org/source/openssl-1.0.2g.tar.gz tar xzf openssl-1.0.2g.tar.gz cd openssl-1.0.2g /Configure darwin64-x86_64-cc make make install brew link openssl --force
Şimdi SQLCipher kuralım:
git clone https://github.com/sqlcipher/sqlcipher.git cd sqlcipher ./configure --enable-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" LDFLAGS="/usr/local/ssl/lib/libcrypto.a" make make install
Şimdi SQLCipher'ımızı test edelim.
Şifrelemek istediğimiz sqlite dosyasını "hexdump" ile bir kontrol edelim.
hexdump -C deneme.sqlite | head -50
Şifresiz olduğunu tablo isimlerinden anlayabilirsiniz.
Şimdi SQLCipher ile şifrelemeyi deneyelim.
sqlcipher deneme.sqlite
Bu komutları yazıyoruz:
sqlite> ATTACH DATABASE 'encrypted.sqlite' AS encrypted KEY 'sifreyi_giriniz'; sqlite> SELECT sqlcipher_export('encrypted'); sqlite> DETACH DATABASE encrypted; sqlite> .q
Şimdi "encrypted.sqlite" isminde bir dosya oluştu. Bu dosyanın şifreli olup olmadığını "hexdump" ile kontrol edelim.
hexdump -C encrypted.sqlite | head -50
Eğer ekranda hiç tablo isimleri ya da sql komutu görmüyorsanız dosyamız şifrelenmiş demektir.
Eğer bir iOS projesinde kullanmak isterseniz buradan, Android'de kullanmak isterseniz buradan tutorial'ine bakabilirsiniz. Şifrelenmiş dosyayı bilgisayardan görüntülemek istersek de SQLite Browser isimli programı indirebiliriz.
Daha fazla bilgi için: https://www.zetetic.net/sqlcipher/sqlcipher-api/