Soru & Cevap

Web servis ile veritabanına kayıt ekleme

29.01.2017 - 12:55

Merhaba arkadaşlar,

Elimde restful kullanarak yazdığım bir web servis var. Mobil telefondan aldığı veriyi Json tipinde döndürüyor. En basitinden veritabanına sha-3 özet fonksiyonu kullanarak parola tuzlama işlemi yapmak istiyorum fakat şifreleme işlemini android tarafında mı(bunu nasıl yapacağım hakkında bir fikrim yok) yoksa web servis tarafında mı yapmalıyım karar veremedim.

Öncesinde md5 kullanarak bir parola şifreleme yapmıştım fakat burda direkt kullanabiliyordum.

public static int musteriEkle(Musteriler musteri){
		int state = 0;
		String sql = "INSERT INTO Musteriler(TCNO,Ad,Soyad,Adres,SehirID,TelefonNo,CepNo,Parola,Eposta,IPAdress,yetkiNo,KayitTarihi) VALUES(?,?,?,?,?,?,?,md5(md5(?)),?,?,?,NOW())";
		try {
			con = ConnectionDatabase.getConnection();
			psmt = con.prepareStatement(sql);
			psmt.setString(1, musteri.getTCNO());
			psmt.setString(2, musteri.getAd());
			psmt.setString(3, musteri.getSoyad());
			psmt.setString(4, musteri.getAdres());
			psmt.setInt(5, musteri.getSehirID().getSehirID());
			psmt.setString(6, musteri.getTelefonNo());
			psmt.setString(7, musteri.getCepNo());
			psmt.setString(8, musteri.getParola());
			psmt.setString(9, musteri.getePosta());
			psmt.setString(10, musteri.getIPAdress());
			psmt.setInt(11, musteri.getYetkiNo().getYetkiNo());
			state = psmt.executeUpdate();
		} catch (SQLException ex) {
			ex.printStackTrace();
		} finally {
			try {
				ConnectionDatabase.kapat(con, psmt);
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return state;
	}

 Kullanmam gereken özet fonksiyonum ise şu şekilde;

import java.security.MessageDigest;
import org.bouncycastle.jcajce.provider.digest.SHA3.DigestSHA3;
import org.bouncycastle.jcajce.provider.digest.SHA3.Digest256;
public class Keccak {
	 public static void main(String[] args) {
	        System.out.println(sha3("123456"));
	    }

	    public static String sha3(final String input) {
	        final DigestSHA3 sha3 = new Digest256();

	        sha3.update(input.getBytes());

	        return Keccak.hashToString(sha3);
	    }

	    public static String hashToString(MessageDigest hash) {
	        return hashToString(hash.digest());
	    }

	    public static String hashToString(byte[] hash) {
	        StringBuffer buff = new StringBuffer();

	        for (byte b : hash) {
	            buff.append(String.format("%02x", b & 0xFF));
	        }

	        return buff.toString();
	    }
}

 Yardımlarınız için şimdiden teşekkürler...

87 Görüntülenme

1 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user gmyucalfarukeren
gmyucalfarukeren
19.02.2023 - 06:32

Merhaba Hafsa! Veritabanına kayıt eklerken şifreleme işlemini web servisi tarafında yapmanız daha uygun olacaktır. Bu sayede mobil cihazdan gönderilen parolaların güvenliği sağlanmış olur ve veritabanında saklanan şifreler de daha güvenli hale gelir

Yukarıda verdiğiniz sha3 özet fonksiyonu, verilen input parametresinin sha-3 özetini hesaplar ve onaltılık formatında bir string olarak döndürür. Bu fonksiyonu kullanarak, web servisi tarafında gelen parolayı şifreleyebilir ve veritabanına kaydedebilirsiniz

Örnek olarak, aşağıdaki gibi bir kod parçası kullanarak parolayı özetleyebilirsiniz

 

public static String hashPassword(String password) {
    return sha3(sha3(password));
}