Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / Tink biblioteca criptográfica de Google

Tink biblioteca criptográfica de Google

Autor jc mouse jueves, junio 6, 2019

Tink es una biblioteca de cifrado desarrollada por un grupo de criptógrafos e ingenieros de seguridad de Google lanzado en el 2018, es una biblioteca criptográfica multiplataforma disponible para Java, Android, C++ y Obj-C. La ultima versión disponible a la fecha de este post es la 1.2.2.

API criptografia

La API de Tink reduce los errores comunes de cifrado con un diseño centrado en el usuario, una implementación cuidadosa y revisiones de código, y pruebas exhaustivas. Google, utiliza Tink para proteger datos de muchos productos como AdMob, Google Pay, Google Assistant, Firebase, Android Search App, etc.

Para agregar Tink a tus proyectos puedes utilizar Maven, por ejemplo:

<dependency>
  <groupId>com.google.crypto.tink</groupId>
  <artifactId>tink</artifactId>
  <version>1.2.2</version>
</dependency>
<dependency>
    <groupId>com.google.protobuf</groupId>
    <artifactId>protobuf-java</artifactId>
    <version>3.8.0</version>
</dependency>

O si estas utilizando Android:

implementation {
  compile 'com.google.crypto.tink:tink:latest'
}

Los principales objetos que utiliza Tink se denominan primitivos y contienen diferentes funciones criptográficas. Estas son:

  • AEAD: AES-EAX, AES-GCM, AES-CTR-HMAC, KMS Envelope, CHACHA20-POLY1305
  • Streaming AEAD: AES-GCM-HKDF-STREAMING, AES-CTR-HMAC-STREAMING
  • Deterministic: AEAD AEAD: AES-SIV
  • MAC: HMAC-SHA2
  • Digital Signature: ECDSA over NIST curves, ED25519
  • Hybrid Encryption: ECIES with AEAD and HKDF, (NaCl CryptoBox)

Por ejemplo, el siguiente código utiliza Tink para cifrar/descifrar un texto mediante AEAD (Authenticated Encryption with Associated Data).

import com.google.crypto.tink.aead.AeadConfig;
import com.google.crypto.tink.config.TinkConfig;
import com.google.crypto.tink.Aead;
import com.google.crypto.tink.KeysetHandle;
import com.google.crypto.tink.aead.AeadFactory;
import com.google.crypto.tink.aead.AeadKeyTemplates;
import java.security.GeneralSecurityException;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
/** 
 * @see http://www.jc-mouse.net/
 * @author mouse
 */
public class Main {
    
    public static void main(String[] args) {
        try {
            //Registro de Tink y AEAD
            TinkConfig.register();
            AeadConfig.register();
            
            KeysetHandle keysetHandle = KeysetHandle.generateNew(AeadKeyTemplates.AES128_GCM);

            String plaintext = "DETERMINACION + DISCIPLINA + TRABAJO FUERTE = CAMINO DEL ÉXITO";
            String associatedData = "jc mouse";
            
            Aead aead = AeadFactory.getPrimitive(keysetHandle);
            
            //Encripta texto
            byte[] ciphertext = aead.encrypt(
                    plaintext.getBytes(StandardCharsets.UTF_8),
                    associatedData.getBytes(StandardCharsets.UTF_8));
            String cipherText = new String(Base64.getEncoder().encode(ciphertext));
            System.out.println("Texto cifrado: " + cipherText);

            //Desencripta texto
            String decrypted = new String(aead.decrypt(ciphertext, associatedData.getBytes()));
            System.out.println("Texto descifrado: " + decrypted);            
            
        } catch (GeneralSecurityException ex) {
            System.err.println(ex.getMessage());
        }
    }

}

Y ejecutando tenemos:

Texto cifrado: ASZwXZs7WWszoLCnurnv6WZCsdTTE6yHkw/5TolfFnEp2jScpEiHKdZN0Ik0lxMlaiQkK2o6LlgthDZV2qqpo/w2NK4ofTbsloqhyymSbOsTu6lxuryIXBSB5d3F87Ra
Texto descifrado: DETERMINACION + DISCIPLINA + TRABAJO FUERTE = CAMINO DEL ÉXITO

Puedes obtener más información sobre Tink en su repositorio en GitHub.

enjoy!!!

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Formateo de registros en Excel con JExcel

Formateo de registros en Excel con JExcel

Tenia un problema, me pasaron unos archivos excel con unos cientos de registros (ver imagen más abajo) que exportaron de...

Simplifica tu código

Simplifica tu código

Project Lombok es una biblioteca para java que se conecta con su IDE (Integrated Development Environment – Entorno...

Localingual: Voces de todo el mundo a tu alcance

Localingual: Voces de todo el mundo a tu alcance

Cada día aparecen cientos sino es que miles de nuevos sitios web en el mundo, pero son muy pocos las webs verdaderamente...

Aplicaciones java con Maven

Aplicaciones java con Maven

¿Qué es Maven? Maven es una herramienta de software para la gestión y construcción de proyectos Java. Provee un conjunto...

Métodos Numéricos: Sustitución Directa

Métodos Numéricos: Sustitución Directa

El Método de Sustitución Directa básicamente consiste en asumir un valor, reemplazar el mismo en la función despejada y...

Ejemplo RESTFul Webservice en Java

Ejemplo RESTFul Webservice en Java

En este post construiremos un Servicio Web en Java bajo el estandar REST (Representational State Transfer), el cual hace...

Comparte lo que sabes

Categorias

Últimas entradas

En este post, aprenderemos como conectar Visual Basic 6 con SQL Server, abrir una tabla, leer su contenido y mostrar est...

Lo que veremos en este post es la configuración del driver para PHP de SQL Server que ha creado Microsoft el cual permit...

Google Bard la inteligencia artificial de Google se actualiza con una mejora que entra a competir con el resto de IAs y...

El error: Instalaba SQL Server 2008 R2 en español en Windows con el idioma «Español (Bolivia)»y de repente me salio este...

Herramientas

Generador de Enlaces a Whatsapp