sign( byte[] dataBuffer, int offset, int longitud )
El método sign() de la clase java.security.Provider se usa para finalizar la operación de firma y almacena los bytes de firma resultantes en el búfer de datos del búfer proporcionado, comenzando en el desplazamiento. El formato de la firma depende del esquema de firma subyacente.
Este objeto de firma se restablece a su estado inicial (el estado en el que se encontraba después de una llamada a uno de los métodos initSign) y se puede reutilizar para generar más firmas con la misma clave privada.
Sintaxis:
public final int sign( byte[] data, int offset, int length )
Parámetros: este método toma el siguiente argumento como parámetro
dataBuffer : búfer para el resultado de la firma como array byte[].
offset : desplazamiento en dataBuffer donde se almacena la firma.
longitud : número de bytes dentro de dataBuffer asignados para la firma.
Valor devuelto: este método devuelve el número de bytes colocados en dataBuffer.
Excepción: este método arroja SignatureException si este objeto de firma no se inicializa correctamente o si este algoritmo de firma no puede procesar los datos de entrada proporcionados.
A continuación se muestran los ejemplos para ilustrar el método sign() :
Nota: El siguiente programa no se ejecutará en el IDE en línea
Ejemplo 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"); // initializing the signature object with key // pair for signing sr.initSign(keyPair.getPrivate()); // updating the data sr.update(data); // getting the number of bytes // placed in outbuffer // by using method sign() int bytes = sr.sign(outbuff, 0, 550); // printing the number of byte System.out.println("Signature:" + 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(); } }
Producción:
Signature:128
Ejemplo 2:
Java
// Java program to demonstrate // sign() 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]; // creating the object of Signature Signature sr = Signature.getInstance("SHA1WithRSA"); ; // getting the number of bytes // placed in outbuffer // by using method sign() int bytes = sr.sign(outbuff, 0, 550); // printing the number of byte System.out.println("Signature:" + bytes); } catch (NoSuchAlgorithmException e) { System.out.println("Exception thrown : " + e); } catch (SignatureException e) { System.out.println("Exception thrown : " + e); } } }
Producción:
Exception thrown : java.security.SignatureException: object not initialized for signing
señal()
El método sign() de la clase java.security.Provider se utiliza para devolver los bytes de firma de todos los datos actualizados. El formato de la firma depende del esquema de firma subyacente.
Una llamada a este método restablece este objeto de firma al estado en el que se encontraba cuando se inicializó previamente para firmar a través de una llamada a initSign(PrivateKey). Es decir, el objeto se resetea y queda disponible para generar otra firma del mismo firmante, si se desea, mediante nuevas llamadas a actualizar y firmar.
Valor de retorno: este método devuelve los bytes de firma del resultado de la operación de firma.
Excepción: este método lanza SignatureExceptionsi este objeto de firma no se inicializa correctamente o si este algoritmo de firma no puede procesar los datos de entrada proporcionados.
A continuación se muestran los ejemplos para ilustrar el método sign():
Nota: El siguiente programa no se ejecutará en el Ejemplo 1 de IDE en línea :
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(); // 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 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(); } }
Producción:
Signature : [96, 101, 38, 76, ... -59]
Ejemplo 2:
Java
// Java program to demonstrate // sign() 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]; // creating the object of Signature Signature sr = Signature.getInstance("SHA1WithRSA"); ; // getting the number of bytes // placed in outbuffer // by using method sign() System.out.println( "Trying to get" + " the signature byte before initializing"); byte[] bytes = sr.sign(); // printing the number of byte System.out.println("Signature:" + bytes); } catch (NoSuchAlgorithmException e) { System.out.println("Exception thrown : " + e); } catch (SignatureException e) { System.out.println("Exception thrown : " + e); } } }
Producción:
Trying to get the signature byte before initializing Exception thrown : java.security.SignatureException: object not initialized for signing
Publicación traducida automáticamente
Artículo escrito por RohitPrasad3 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA