7 Nisan 2017 Cuma

X500Principal Sınıfı

Giriş
Şu arayüzü gerçekleştirir.
import java.security.Principal;
constructor
Şöyle yaparız.
X500Principal p = new X500Principal("CN=Android Debug,O=Android,C=US");


JAX-RS ContainerRequestFilter Arayüzü

Giriş
Şu satırı dahil ederiz.
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.SecurityContext;
import javax.ws.rs.ext.Provider;
import javax.annotation.Priority;
import javax.ws.rs.Priorities;
Tanımlama
Şöyle yaparız.
@Secured
@Provider
@Priority(Priorities.AUTHENTICATION)
public class AuthenticationFilter implements ContainerRequestFilter {...}
filter metodu
Şöyle yaparız.
@Overridepublic void filter(ContainerRequestContext requestContext)
  throws IOException {...}


6 Nisan 2017 Perşembe

Signature Sınıfı - Dijital İmza İçin Kullanılır

Giriş
Şu satırı dahil ederiz.
import java.security.Signature;
Kullanım
İki kullanım amacı var
1. Veriyi imzalamak yani sign
2. İmzayı veriyi doğrulamak yani verify
Sign için açıklama şöyle
  • Generate a key pair: First, you need to generate a key pair consisting of a public key and a private key. You can use the Java KeyPairGenerator class to do this.
  • Sign the payload: Once you have the private key, you can use it to sign the payload. You can use the Java Signature class to do this. The Signature class provides different algorithms to sign data, such as SHA256withRSA, SHA1withDSA, etc. Choose the appropriate algorithm based on your requirements.
Verify için açıklama şöyle
  • Send the signed payload and the public key to the client: The client needs to have access to the public key to verify the signature. You can send the signed payload and the public key to the client through a REST endpoint or any other means.
  • Verify the signature: Once the client receives the signed payload and the public key, it can use the public key to verify the signature. You can use the Java Signature class to verify the signature.
Sign İşlemi
Signature nesnesi elde edildikten sonra initSign(PrivateKey) metodu çağrılır veri eklenir ve daha sonra update() metodu çağrılır
Örnek
Şöyle yaparız.
KeyPairGenerator kpg = KeyPairGenerator.getInstance("Ed25519");
KeyPair kp = kpg.generateKeyPair();
Signature sig = Signature.getInstance("Ed25519");
sig.initSign(kp.getPrivate());
sig.update(msg);
Verify İşlemi
Signature nesnesi elde edildikten sonra initVerify(PublicKey) metodu çağrılır imzalı veri eklenir ve daha sonra verify() metodu çağrılır

Örnek - Sign ve Verify
Şöyle yaparız
String payload = "test-payload"; // Generate key pair KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA"); keyGen.initialize(2048); KeyPair keyPair = keyGen.generateKeyPair(); PrivateKey privateKey = keyPair.getPrivate(); PublicKey publicKey = keyPair.getPublic(); // Sign the payload Signature signature = Signature.getInstance("SHA256withRSA"); signature.initSign(privateKey); signature.update(payload.getBytes()); byte[] signedPayload = signature.sign(); // Verify the signature Signature verifier = Signature.getInstance("SHA256withRSA"); verifier.initVerify(publicKey); verifier.update(payload.getBytes()); boolean verified = verifier.verify(signedPayload); if (verified) { // Signature is valid System.out.println("valid"); } else { // Signature is invalid System.out.println("invalid"); }
getInstance metodu
Şöyle yaparız.
Signature sig = Signature.getInstance("SHA1withDSA", "SUN");
initSign metodu
Şöyle yaparız.
PrivateKey priv = ...;
sig.initSign (priv);
initVerify metodu
Şöyle yaparız.
PublicKey pubKey = ...;
sig.initVerify(pubKey);
sign metodu
Şöyle yaparız.
byte[] signature = sig.sign();
update metodu
Şöyle yaparız.
byte[] buffer = ...;
sig.update(buffer);
verify metodu
Şöyle yaparız.
byte[] sigToVerify = ...;
boolean verifies = sig.verify(sigToVerify);

5 Nisan 2017 Çarşamba

OpenCV CascadeClassifier Sınıfı

Giriş
Şu satırı dahil ederiz.
import org.opencv.objdetect.CascadeClassifier;
Constructor - xml path
Şöyle yaparız.
CascadeClassifier cascade = new CascadeClassifier(
  Foo.class.getResource("haarcascade_frontalface_alt.xml").getPath());
detectMultiScale metodu
Parametre olarak scaleFactor, minNeighbors, minSize ve flags alır. Sonuç olarak yüzlerin bulunduğu Rectangle dizisini verir. Şöyle yaparız.
MatOfRect faceDetections = new MatOfRect();
cascade.detectMultiScale(image, faceDetections);
//Draw rectangles
for (Rect rect : faceDetections.toArray()) {
  Imgproc.rectangle(image, new Point(rect.x, rect.y),
    new Point(rect.x + rect.width, rect.y + rect.height),
    new Scalar(0, 255, 0));
}


1 Nisan 2017 Cumartesi

JMS MessageListener Arayüzü

Tanımlama
Şöyle yaparız.
public class SimpleJMSMessageListener implements MessageListener {
  ...
}
onMessage metodu
Şöyle yaparız.
@Override
public void onMessage(Message message) {

  if (message instanceof TextMessage) {
    String receivedMessage = ((TextMessage) message).getText();
      ...
  }
  ...
}
Mesajı farklı bir encoding ile işlemek istersek şöyle yaparız.
byte[] by = ((TextMessage) message).getText().getBytes("ISO-8859-1");
String text = new String(by,"UTF-8");

31 Mart 2017 Cuma

JAX-RS @POST Anotasyonu

Giriş
Şu satırı dahil ederiz.
import javax.ws.rs.Consumes;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
Girdi Multipart, Çıktı Response
Şöyle yaparız.
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response addImage(@FormDataParam("file") InputStream is) {
  ...
  return Response.ok(200).build();
}
Girdi Form, Çıktı Json
Şöyle yaparız.
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Registration loginUserInfo(@FormParam("logusertype") String logUserType,
                                 @FormParam("userNAME") String UserNAME,
                                 @FormParam("PassWORD") String PAssWORD)
                                 throws ParseException
{
...
}
Girdi Json, Çıktı Response
JAX-RS Response döner. Şöyle yaparız.
@POST
@Path("/valid") 
@Consumes(MediaType.APPLICATION_JSON)   
public Response isValid(JSONObject userDetails )
{
  ...
  return Response.status(200).entity("OK").build();
}
Girdi Json, Çıktı Text
Post girdi olarak json alabilir. Bu durumda metod parametresi tek bir nesne olacaktır. Şöyle yaparız. Çıktı olarak html, json veya başka bir şey dönebilir.
@POST
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.TEXT_PLAIN})
@Path("/post")
public String postMessage(Message msg) throws Exception{
}

30 Mart 2017 Perşembe

AutoCloseable Arayüzü

Giriş
Bu arayüzden kalıtmak kaynakların kapatılmasını kolaylaştırır.

close metodu
Şöyle yaparız.
public class MyService implements AutoCloseable {
  public void doWork() {
    // ...
  }

  @Override
  public void close() {
    // release resources
  }
}
Kullanım
Şöyle yaparız.
try (MyService myService = new MyService()) {
  //...
  myService.doWork()
  //...
  myService.doWork()
  //...
}