2012-07-05 6 views
11

पर हस्ताक्षर करने के लिए ईसीडीएसए एल्गोरिदम का ट्यूटोरियल जावा में ईसीडीएसए एल्गोरिदम का उपयोग करके स्ट्रिंग पर हस्ताक्षर करने के बारे में एक सरल ट्यूटोरियल खोजने में मेरी सहायता कर सकते हैं। लेकिन बाउंसीकैसल जैसे किसी तीसरे पक्ष के पुस्तकालयों का उपयोग किए बिना। बस जेडीके 7. मुझे एक साधारण उदाहरण खोजना मुश्किल लगता है, मैं क्रिप्टोग्राफी के लिए नया हूं।स्ट्रिंग


import java.io.*; 
import java.security.*; 

public class GenSig { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     /* 
     * Generate a DSA signature 
     */ 

     try { 

      /* 
      * Generate a key pair 
      */ 

      KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA", "SUN"); 
      SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN"); 

      keyGen.initialize(1024, random); 

      KeyPair pair = keyGen.generateKeyPair(); 
      PrivateKey priv = pair.getPrivate(); 
      PublicKey pub = pair.getPublic(); 

      /* 
      * Create a Signature object and initialize it with the private key 
      */ 

      Signature dsa = Signature.getInstance("SHA1withDSA", "SUN"); 

      dsa.initSign(priv); 

      String str = "This is string to sign"; 
      byte[] strByte = str.getBytes(); 
      dsa.update(strByte); 

      /* 
      * Now that all the data to be signed has been read in, generate a 
      * signature for it 
      */ 

      byte[] realSig = dsa.sign(); 
      System.out.println("Signature: " + new String(realSig)); 


     } catch (Exception e) { 
      System.err.println("Caught exception " + e.toString()); 
     } 
    } 
} 

कैसे ECDSA के लिए इसे संशोधित करने के लिए?

+0

देखो: [चुनाव आयोग प्रदाता] (http://docs.oracle.com/javase/7/docs/technotes/guides/security/SunProviders.html #SunEC) –

+0

उदाहरण के लिए यदि मैं इस ट्यूटोरियल का उपयोग करता हूं, तो मुझे यहां क्या बदलना चाहिए? http://www.java2s.com/Code/Java/Security/Testthesignature.htm या इस एक का उपयोग http://docs.oracle.com/javase/tutorial/security/apisign/step1.html मुझे डीएसए के बजाय रखना चाहिए ECDSA? – user1379574

+2

कृपया सही के बगल में वी चिह्न पर क्लिक करके कुछ उत्तरों को स्वीकार करें। या हमें बताएं (और इस मामले में ग्रेग्स) क्यों सवाल का संतोषजनक उत्तर नहीं दिया गया है। –

उत्तर

15

यहां आपके उदाहरण के आधार पर छोटा उदाहरण दिया गया है। DSA का उपयोग करता है, लेकिन इसके बजाय इन एल्गोरिदम का उपयोग है कि किसी भी उदाहरण के लिए

import java.math.BigInteger; 
import java.security.KeyPair; 
import java.security.KeyPairGenerator; 
import java.security.PrivateKey; 
import java.security.PublicKey; 
import java.security.SecureRandom; 
import java.security.Signature; 

public class ECDSAExample { 

    public static void main(String[] args) throws Exception { 
     /* 
     * Generate an ECDSA signature 
     */ 

     /* 
     * Generate a key pair 
     */ 

     KeyPairGenerator keyGen = KeyPairGenerator.getInstance("EC"); 
     SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); 

     keyGen.initialize(256, random); 

     KeyPair pair = keyGen.generateKeyPair(); 
     PrivateKey priv = pair.getPrivate(); 
     PublicKey pub = pair.getPublic(); 

     /* 
     * Create a Signature object and initialize it with the private key 
     */ 

     Signature dsa = Signature.getInstance("SHA1withECDSA"); 

     dsa.initSign(priv); 

     String str = "This is string to sign"; 
     byte[] strByte = str.getBytes("UTF-8"); 
     dsa.update(strByte); 

     /* 
     * Now that all the data to be signed has been read in, generate a 
     * signature for it 
     */ 

     byte[] realSig = dsa.sign(); 
     System.out.println("Signature: " + new BigInteger(1, realSig).toString(16)); 

    } 
} 
+1

वह वक्र क्या होगा? पी-256? –

+1

मुझे डर था कि कोई उससे पूछेगा। मुझे नहीं पता, पी -256 हालांकि मेरा अनुमान होगा। –

+0

यूप, ऐसा लगता है कि –

संबंधित मुद्दे