Download File Tutorial di File puputoce

Jumat, 12 Februari 2010

.NET dan Java Cryptography Pain Pain Pain

.NET dan Java Cryptography digital signatureJumat pagi yang sangat cerah, bahkan pepohonan pun sempat melambaikan daunnya dengan lembut menyapa gw yang sedang bersiap berangkat ngantor. Berangkat dengan baju batik motif duri ikan, gw berangkat ke kantor dengan penuh percaya diri.

Hari itu gw berencana berangkat ke partner kantor untuk join development, rencananya jam 9 pagi mau duduk bareng sambil menyelaraskan security di kedua belah pihak.

Gw pake .Net dan partner pake Java, kita janjian pake XML Signature. Metode Signaturenya menggunakan RSA dan untuk digestnya menggunakan SHA, karena gw pake .NET gw gak begitu kerepotan untuk melakukan signature pada XML, karena .NET mempunyai System.Security.Cryptography.Xml

Percobaan pertama kirim data gak sukses, kemungkinan karena public key yang gw kasih gak sepasang sama private key gw, akhirnya gw create baru pair public key dan private key. Coba lagi dan gagal lagi, hmmm aneh juga.

Percobaan pertama gw kirim XML Modulus sama Exponen nya ke partner, dia implemantasi dan kita testing bertukaran data, ternyata tekhnik seperti itu gagal. Bingung udah mulai nempel di kepala, hasil digest dan signature udah berhasil di buat dan udah diterima, format juga udah cucok, tapi kenapa gak valid pada saat di validasi.

Akhirnya kita coba membalik kondisi nya, Java yang generate pair private dan public key dan di kasih ke .NET buat bikin encryptnya. Ternyata gagal waktu load private key di .NET, “Invalid Data”.

Coba lagi .NET bikin file PFX trus Java convert ke file JKS, usaha convernya setengah hidup, dari satu tool ke tool yang lainnya udah di jajalin. Oke deh sekarang Java load CER file yang gw generate, akhirnya gagal juga.

Ubek kanan kiri gak kena kena, akhirnya gw coba print byte per byte, dari .Net maupun Java, Jaah ternyata hasil Base64 dari byte yang .Net kirim berbeda banget kalo udah sampe di java.

Contoh

.NET -> 126 127 128 129 130

Java -> 126 127 -128 -127 -125

Ternyata di .NET byte itu unsigned dari 0 sampai 255, sedangkan di Java byte itu signed dari -128 sampai 127, gw curiga ini penyebab dari gak pernah validnya dokumen gw.

Sip deh, kalo gitu gimana dong biar bisa valid ?????

Udah pusing bro, udah mau jam 9 malem, motor gw masih di kantor neeeh, udah gak bisa mikir pulak, pulaaaaaaaaaaaaaaaaaaaaaaaaang.

9 komentar:

  1. Wah...saya kurang ngerti nih..gini-ginian bos, dikantor sampe jam 9 melem...wuiiih betah amat ! he..he

    BalasHapus
  2. bukannya betah... terpaksa :p

    BalasHapus
  3. Ekke juga ikutan pusing bacanya....:D

    BalasHapus
  4. Gw tau lo bisa Put... Fighting!

    BalasHapus
  5. aku pusing bacanya. Gak ngerti XDDDD

    BalasHapus
  6. wah selamat berpusing-pusing ria yaa.. :p

    BalasHapus
  7. kalo ditulis pake bahasa inggris bisa bermanfaat buat para makhluk IT di seluruh dunia :p tapi solusinya belum ada ya? XDDDD ya udah, asal ketemu masalahnya, solusinya tinggal cari di google :p

    BalasHapus
  8. sh mumet.. mumet.. mumett....

    BalasHapus
  9. @all
    udah gak mumet.. thanks :D

    BalasHapus