] السلام عليكم ورحمه الله و بركاته
ك بصراحه لي يومين و أنا جالسه أحاول في برنامج التوقيع الإلكتروني
ك فكرة البرنامج أعمل برنامج يعمل توقيع إلكتروني
1- يقرأ المسج من فايل
2- يعمل الkey
3- يوقع
- يحفظ التوقيع في فايل
إلى هنا ومافي شي و الموضوع يجنن
المرحله الثانيه Verifying
لازم أقرأ المسج و المسج الموقع من فايل
و أقرأ public key من الفايل وهنا المشكله كيف أحول الstring إللي حفظته في الفايل لpublic مو راضي جربت جميع أنواع الmethod ومافي فايده
بليــــــــــــز أحد يقولي في الغلط
import java.io.*;
import java.util.*;
import java.security.*;
import javax.crypto.*;
import java.security.spec.EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.security.spec.PKCS8EncodedKeySpec;
public class MainV {
public static void main(String[]args) throws Exception
{
//-----------read massege from file---------------------
Scanner fileScan=new Scanner (new File("data.txt"));
String url="";
while(fileScan.hasNext())
{
url=fileScan.nextLine();
}
System.out.println("read data from file don");
System.out.println("----------------------------------");
//------------------read massege signture----------------
Scanner mScan=new Scanner(new File("MassegeSing.txt"));
String mssegesign="";
while(mScan.hasNext())
{
mssegesign=mScan.nextLine();
}
System.out.println("read Massege Singture don");
System.out.println("----------------------------------");
VerSig veir=new VerSig();
veir.vers(url,mssegesign);
}
}------------------------------------------------------------------
وهوهذي الكلاس
import java.io.*;
import java.util.*;
import java.security.*;
import javax.crypto.*;
import java.security.spec.EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.security.spec.PKCS8EncodedKeySpec;
public class VerSig {
public void vers(String data,String signt)throws Exception
{
byte[] databyte=data.getBytes();
byte[]singbyte=signt.getBytes();
//-------------hash data---------------------------
MessageDigest sha= MessageDigest.getInstance("MD5");
sha.update(databyte);
byte[] msgDigest = sha.digest();
System.out.println("hash to massege don");
System.out.println("----------------------------------");
//-------------read public key--------------------
Scanner readp=new Scanner(new File("publicc.txt"));
String p="";
while(readp.hasNext())
{
p+=readp.nextLine();
}
byte[]bytep=p.getBytes();
System.out.println("read public key from file don");
System.out.println("----------------------------------");
//-----------convert public key----------------------------
Cipher enrsa =Cipher.getInstance("RSA");
EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(bytep);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicKey = keyFactory.generatePublic(publicKeySpec);
//----------------signture data----------------------
Signature sig = Signature.getInstance("MD5WithRSA");
sig.initSign(privateKey);
sig.update(msgDigest);
byte[] signatureBytes= sig.sign();
sig.initVerify(publicKey);
sig.update(msgDigest);
boolean verified = sig.verify(signatureBytes);
if( verified)
System.out.println("it is rigth signture ");
else
System.out.println("it is wrong signture ");
}
}أنا عارفه الغلط في جزيئة تحويل الstring ل public key
بس كيف الصح ؟؟
أ