当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Java Signature initSign()用法及代码示例


initSign(PrivateKey privateKey)

java.security.Provider类的initSign()方法用于初始化此对象以进行签名。如果使用不同的参数再次调用此方法,则该调用的效果无效。

用法:

public final void 
    initSign(PrivateKey privateKey) 
        throws InvalidKeyException

参数:此方法将身份的私钥作为要生成其签名的参数


Exception:如果 key 无效,则此方法引发InvalidKeyException。

下面是说明initSign()方法的示例:

注意:以下程序将无法在在线IDE中运行

范例1:

// Java program to demonstrate 
// initSign() method 
  
import java.security.*; 
import java.util.*; 
import sun.misc.BASE64Encoder; 
  
public class GFG1 { 
    public static void main(String[] argv) throws Exception 
    { 
        try { 
  
            // calling getKeyPair() method and assining in keypair 
            KeyPair keyPair = getKeyPair(); 
  
            // creating byte array object 
            byte[] outbuff = new byte[1000]; 
  
            // data to be updated 
            byte[] data = "test".getBytes("UTF8"); 
  
            // creating the object of Signature 
            Signature sr = Signature.getInstance("SHA1WithRSA"); 
  
            // initializing the signature object with key pair 
            // for signing 
            // Using method initSign 
            sr.initSign(keyPair.getPrivate()); 
  
            // updating the data 
            sr.update(data); 
  
            // getting the signature byte 
            // of an signing operation 
            // by using method sign() 
            byte[] bytes = sr.sign(); 
  
            // pritning the number of byte 
            System.out.println("Signature:" + Arrays.toString(bytes)); 
        } 
  
        catch (NoSuchAlgorithmException e) { 
  
            System.out.println("Exception thrown:" + e); 
        } 
        catch (SignatureException e) { 
  
            System.out.println("Exception thrown:" + e); 
        } 
    } 
  
    // defining getKeyPair method 
    private static KeyPair getKeyPair() throws NoSuchAlgorithmException 
    { 
  
        // creating the object of KeyPairGenerator 
        KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); 
  
        // initializing with 1024 
        kpg.initialize(1024); 
  
        // returning the key pairs 
        return kpg.genKeyPair(); 
    } 
}

输出:

Signature:[-109, -21, 90, -114, -22,
....
....
...., 92, 1]

范例2:显示InvalidKeyException

// Java program to demonstrate 
// initSign() method 
  
import java.security.*; 
import java.util.*; 
  
public class GFG1 { 
    public static void main(String[] argv) throws Exception 
    { 
        try { 
  
            // data to be updated 
            byte[] data = "test".getBytes("UTF8"); 
  
            // creating the object of Signature 
            Signature sr = Signature.getInstance("SHA1WithRSA"); 
  
            // initializing the signature object with key pair 
            // for signing 
            // Using method initSign 
            System.out.println("Trying to put null as private key "); 
            sr.initSign(null); 
  
            // updating the data 
            sr.update(data); 
  
            // getting the signature byte 
            // of an signing operation 
            // by using method sign() 
            byte[] bytes = sr.sign(); 
  
            // pritning the number of byte 
            System.out.println("Signature:" + Arrays.toString(bytes)); 
        } 
  
        catch (NoSuchAlgorithmException e) { 
  
            System.out.println("Exception thrown:" + e); 
        } 
        catch (SignatureException e) { 
  
            System.out.println("Exception thrown:" + e); 
        } 
        catch (InvalidKeyException e) { 
  
            System.out.println("Exception thrown:" + e); 
        } 
    } 
}

输出:

Trying to put null as private key 
Exception thrown:java.security.InvalidKeyException:Key must not be null

initSign(PrivateKey privateKey, SecureRandom random)

java.security.Provider类的initSign()方法用于初始化此对象以进行签名。如果使用不同的参数再次调用此方法,则该调用的效果无效。

用法:

public final void 
    initSign(PrivateKey privateKey, SecureRandom random)
        throws InvalidKeyException

参数:此方法将以下参数作为参数:


  • privateKey-将要生成其签名的身份的私钥。
  • random-此签名的随机性来源。

异常:如果 key 无效,则此方法引发InvalidKeyException。

下面是说明sign()方法的示例:

注意:以下程序将无法在在线IDE中运行

范例1:

// Java program to demonstrate 
// sign() method 
  
import java.security.*; 
import java.util.*; 
import sun.misc.BASE64Encoder; 
  
public class GFG1 { 
    public static void main(String[] argv) throws Exception 
    { 
        try { 
  
            // calling getKeyPair() method and assining in keypair 
            KeyPair keyPair = getKeyPair(); 
  
            // creating byte array object 
            byte[] outbuff = new byte[1000]; 
  
            // data to be updated 
            byte[] data = "test".getBytes("UTF8"); 
  
            // creating the object of Signature 
            Signature sr = Signature.getInstance("SHA1WithRSA"); 
  
            // creating the object of SecureRandom 
            SecureRandom sb = SecureRandom.getInstance("SHA1PRNG"); 
  
            // initializing the signature object with key pair 
            // for signing 
            sr.initSign(keyPair.getPrivate(), sb); 
  
            // updating the data 
            sr.update(data); 
  
            // getting the signature byte 
            // of an signing operation 
            // by using method sign() 
            byte[] bytes = sr.sign(); 
  
            // pritning the number of byte 
            System.out.println("Signature:" + Arrays.toString(bytes)); 
        } 
  
        catch (NoSuchAlgorithmException e) { 
  
            System.out.println("Exception thrown:" + e); 
        } 
        catch (SignatureException e) { 
  
            System.out.println("Exception thrown:" + e); 
        } 
    } 
  
    // defining getKeyPair method 
    private static KeyPair getKeyPair() throws NoSuchAlgorithmException 
    { 
  
        // creating the object of KeyPairGenerator 
        KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); 
  
        // initializing with 1024 
        kpg.initialize(1024); 
  
        // returning the key pairs 
        return kpg.genKeyPair(); 
    } 
}

输出:

Signature:[-121, -82, ....
....
....104, 114, -67]

范例2:显示InvalidKeyException

// Java program to demonstrate 
// initSign() method 
  
import java.security.*; 
import java.util.*; 
  
public class GFG1 { 
    public static void main(String[] argv) throws Exception 
    { 
        try { 
  
            // creating byte array object 
            byte[] outbuff = new byte[1000]; 
  
            // data to be updated 
            byte[] data = "test".getBytes("UTF8"); 
  
            // creating the object of Signature 
            Signature sr = Signature.getInstance("SHA1WithRSA"); 
  
            // creating the object of SecureRandom 
            SecureRandom sb = SecureRandom.getInstance("SHA1PRNG"); 
  
            // initializing the signature object with null key pair 
            // for signing using initSign() method 
            System.out.println("Trying to put the null as key"); 
            sr.initSign(null, sb); 
  
            // updating the data 
            sr.update(data); 
  
            // getting the signature byte 
            // of an signing operation 
            // by using method sign() 
            byte[] bytes = sr.sign(); 
  
            // pritning the number of byte 
            System.out.println("Signature:" + Arrays.toString(bytes)); 
        } 
  
        catch (NoSuchAlgorithmException e) { 
  
            System.out.println("Exception thrown:" + e); 
        } 
        catch (InvalidKeyException e) { 
  
            System.out.println("Exception thrown:" + e); 
        } 
    } 
}

输出:

Trying to put the null as key
Exception thrown:java.security.InvalidKeyException:Key must not be null


相关用法


注:本文由纯净天空筛选整理自RohitPrasad3大神的英文原创作品 Java Signature initSign() method with Examples。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。