ขอความช่วยเหลือท่านผู้รู้เรื่อง Encrypt ข้อมูล โดย RSA แบบ asymmetric (PublicKey, PrivateKey)หน่อยครับ
ผมกำลังพัฒนาระบบตัวหนึ่งซึ่งตัว Encrypt ข้อมูลโดยวิธีแบบ RSA ซึ่งฝั่งทางผมพัฒนาระบบด้วย VB.NET แต่ติดปัญหาที่ฝั่ง Decrypt นั้นพัฒนาระบบด้วย java และ ทางฝั่ง Decrypt ได้กำหนด KeySpec ของการ Encrypt มา ด้วยที่ผมไม่เคยทำงานเกี่ยวกับด้านการเข้ารหัสมาก่อนจึงไม่สามารถทำ KeySpec ได้ตามที่เขาต้องการได้ จึงได้ลองหาข้อมูลใน google ดูแล้วแต่ก็ยังไม่ได้สามารถเข้ารหัสได้ตาม KeySpec ได้
จึงขอความช่วยเหลือท่านผู้รู้เรื่อง Encrypt ข้อมูล โดย RSA ด้วย vb.net
เราจะสามารถกำหนด keySpec ได้อย่างไรครับ
ผมมี code ตัวอย่าง การกำหนด KeySpec ที่ฝั่ง java กำหนดให้ ซึ่งพอจะมาปรับเป็น vb.net ก็ไม่สามารถปรับได้ (ด้วยความรู้อันน้อยนิด T^T)
byte[] txtByte = decode64.decodeBuffer(publicKey);
RSAPublicKey rsaKey = (RSAPublicKey)KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(txtByte));
BigInteger modulus = new BigInteger(rsaKey.getModulus().toString());
BigInteger exponent = new BigInteger(rsaKey.getPublicExponent().toString());
RSAPublicKeySpec rsaKeySpec = new RSAPublicKeySpec(modulus, exponent);
RSAPublicKey rsaPublicKey = (RSAPublicKey)KeyFactory.getInstance("RSA").generatePublic(rsaKeySpec);
Cipher rsa_cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
rsa_cipher.init(Cipher.ENCRYPT_MODE,rsaPublicKey);
byte[] encrypt_data = rsa_cipher.doFinal(txt.getBytes());
ขอความกรุณาด้วยครับ
น่าจะใส่ error message ทางฝั่ง java มาให้ดูด้วยนะครับ
พอดีเป็น Mapping Error ที่ตกลงกันนะครับ Error ก็ประมาณว่า Decrypt ไม่ได้ เลยทำให้ไม่รู้ Error จริงๆ คืออะไร
ผมไม่ถนัดเรื่อง cryptography เท่าไรครับ
แต่คิดว่านี่กับนี่น่าจะพอช่วยได้
อาจลองดู project นี้ด้วยนะครับ
http://www.codeproject.com/Articles/38739/RSA-Private-Key-Encryption
ถ้าดู code ไม่เข้าใจนัก ผมคิดว่าเริ่มจากการเอา private key + crypted string ที่ใช้กับฝั่ง java มาลองใช้ กับ RSA Tester ที่เค้ามีให้ใน demo ก็คงได้ครับ, แล้วลองถอดข้อความที่เข้ามาจาก java ก่อน
ถ้าสุดท้ายไขว้กันได้ดี ค่อยเอา C# ตัวนี้ไปแปลงเป็น VB.Net ครับ
ขอบคุณครับ เดี๋ยวเอาไปลองปรับใช้ดูครับ ^^