Java Signature initSign()方法及其示例

initSign(私钥私钥)

这个 initSign() 方法 JAVA安全供应商 类用于初始化此对象以进行签名。如果使用不同的参数再次调用此方法,则会否定此调用的效果。

null

语法:

public final void     initSign(PrivateKey privateKey)         throws InvalidKeyException

参数: 这种方法需要 私钥 将身份作为要生成其签名的参数 例外情况: 这个方法抛出 InvalidKeyException 如果密钥无效。

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

注: 以下程序将不会在联机IDE中运行

例1:

JAVA

// 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 assigning 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();
// printing 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

// 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();
// printing 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)

这个 initSign() 方法 JAVA安全供应商 类用于初始化此对象以进行签名。如果使用不同的参数再次调用此方法,则会否定此调用的效果。

语法:

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

参数: 此方法采用以下参数:

  • 私钥 –将要生成签名的身份的私钥。
  • 随机的 –该签名的随机性来源。

例外情况: 这个方法抛出 InvalidKeyException 如果密钥无效。

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

注: 以下程序将不会在联机IDE中运行

例1:

JAVA

// 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 assigning 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();
// printing 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

// 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();
// printing 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 keyException thrown : java.security.InvalidKeyException: Key must not be null

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享