fif-common-cipher v1.0.0
FIFTECH - Libreria de Cifrado y Descifrado
Libreria con metodos utiles para cifrar y descifrar la informacion de nuestros productos.
Es necesario setiar las llaves publica y privada antes de ocupar los metodos de cifrado con llave.
*El padding es seteado por defecto con: constants.RSA_PKCS1_PADDING*
CommonCipher
Metodos de ayuda para cifrar y descifrar
setPublicKey
Setea la llave publica dentro de la libreria para que los metodos de cifrado la ocupen posteriormente
Parámetro Tipo Valor esperado key String Una llave publica valida en formato string
Ejemplos de uso
import { CommonCipher } from 'fif-common-cipher'
CommonCipher.setPublicKey('-----BEGIN PUBLIC KEY-----\n' +
'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0\n' +
'FPqri0cb2JZfXJ/DgYSF6vUpwmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/\n' +
'3j+skZ6UtW+5u09lHNsj6tQ51s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQAB\n' +
'-----END PUBLIC KEY-----');
setPrivateKey
Setea la llave privada dentro de la libreria para que los metodos de descifrado la ocupen posteriormente
Parámetro Tipo Valor esperado key String Una llave privada valida en formato string
Ejemplos de uso
import { CommonCipher } from 'fif-common-cipher'
CommonCipher.setPrivateKey('-----BEGIN RSA PRIVATE KEY-----\n' +
'MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\n' +
'wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\n' +
'1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\n' +
'3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\n' +
'pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\n' +
'GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\n' +
'AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\n' +
'L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\n' +
'X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\n' +
'U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\n' +
'37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\n' +
'-----END RSA PRIVATE KEY-----');
encryptStringWithRSAPublicKey
Cifra un texto dado en base a la llave publica ingresada anteriormente, el formato es utf-8.
En caso de no encontrarse definida la llave publica se arroja un error
Parámetro Tipo Valor esperado toEncrypt String Texto que se desea encriptar con la llave publica ingresada anteriormente
Ejemplos de uso
import { CommonCipher } from 'fif-common-cipher'
const toEncrypt1 = 'BEML920313HMCLNS09'
console.log(CommonCipher.encryptStringWithRSAPublicKey(toEncrypt1)) // CnmVHzPtU0dJlQvoXRq39PGObXLQtbPl4kerQJ9hRKAFINQpJwofgzmqsQP4tLbI3ymDTdSzoMGGbcIzLFvQTS5tdec9JBNhgvap6rTiGSbeO7kBhRJxVxku0NyI3wZ18oleSUa9Izo0AU3sSCo4olSCLo6DP2xUcV40+aecdGw=
const toEncrypt2 = 'EJEMPLO2'
console.log(CommonCipher.encryptStringWithRSAPublicKey(toEncrypt2)) // hnhSFJiZ+gcMgqd07oPkAnSos7pv1mp0tWmyd6c3EcMhA+yeDQklWOr+8fvyBFmqT2bdV09zGMy2FpQAt63LLvJ35uJqbZ4g2fF5pSWdT5aFUyGpnFEbQjST5s4Ug48MIloiGh+A4/PIpU56h8mZCH7C3uNa5dM/Fj2wAvjS4uU=
decryptStringWithRSAPrivateKey
Descifra un texto dado en base a la llave privada ingresada anteriormente
Parámetro Tipo Valor esperado toDecrypt String Un texto cifrado con la llave publica ingresada anteriormente
Ejemplos de uso
import { CommonCipher } from 'fif-common-cipher'
const toDecrypt1 = 'hnhSFJiZ+gcMgqd07oPkAnSos7pv1mp0tWmyd6c3EcMhA+yeDQklWOr+8fvyBFmqT2bdV09zGMy2FpQAt63LLvJ35uJqbZ4g2fF5pSWdT5aFUyGpnFEbQjST5s4Ug48MIloiGh+A4/PIpU56h8mZCH7C3uNa5dM/Fj2wAvjS4uU='
console.log(CommonCipher.decryptStringWithRSAPrivateKey(toDecrypt1)) // BEML920313HMCLNS09
const toDecrypt2 = 'CnmVHzPtU0dJlQvoXRq39PGObXLQtbPl4kerQJ9hRKAFINQpJwofgzmqsQP4tLbI3ymDTdSzoMGGbcIzLFvQTS5tdec9JBNhgvap6rTiGSbeO7kBhRJxVxku0NyI3wZ18oleSUa9Izo0AU3sSCo4olSCLo6DP2xUcV40+aecdGw='
console.log(CommonCipher.decryptStringWithRSAPrivateKey(toDecrypt2)) // EJEMPLO2
createSignature
Devuelve un texto firmado en base a la llave ingresada
Parámetro Tipo Valor esperado textToSign String texto a ser firmado key String llave para la firma
Ejemplos de uso
import { CommonCipher } from 'fif-common-cipher'
const textToSign1 = 'texto a firmar'
const key1 = 'key'
console.log(CommonCipher.createSignature(textToSign1, key1)) // U2FsdGVkX1+RwXiCtZW7bCCpl/8uLS45ld76RCinKCRFSlUAwwQ+pBr3Z1LH1FkDrJZAAnK98adGTfZvu8nb0AvAl+PR9MU6IK6MRycifHgPaF8aOqj+s0esJp2ZuWyg
verifySignature
Verifica que el texto cifrado corresponda con la firma creada a partir de la llave dada
Parámetro Tipo Valor esperado payload String texto firmado key String llave con la que se cifro signatureIn String firma que se creo
Ejemplos de uso
import { CommonCipher } from 'fif-common-cipher'
const payload1 = 'texto a firmar'
const key1 = 'key'
signatureIn1 = 'U2FsdGVkX1+RwXiCtZW7bCCpl/8uLS45ld76RCinKCRFSlUAwwQ+pBr3Z1LH1FkDrJZAAnK98adGTfZvu8nb0AvAl+PR9MU6IK6MRycifHgPaF8aOqj+s0esJp2ZuWyg'
console.log(CommonCipher.verifySignature(payload1, key1, signatureIn1)) // true
const textToSign2 = 'este texto no es el que firme'
const key2 = 'key'
signatureIn2 = 'U2FsdGVkX1+RwXiCtZW7bCCpl/8uLS45ld76RCinKCRFSlUAwwQ+pBr3Z1LH1FkDrJZAAnK98adGTfZvu8nb0AvAl+PR9MU6IK6MRycifHgPaF8aOqj+s0esJp2ZuWyg'
console.log(CommonCipher.verifySignature(payload2, key2, signatureIn2)) // false
encryptAllValuesFromObject
Cifra todos los valores de un objeto
Parámetro Tipo Valor esperado body String objeto javascript que queremos cifrar sus valores key String llave para firmar
Ejemplos de uso
import { CommonCipher } from 'fif-common-cipher'
const body1 = {
'nombre': 'orlando',
'apellido': 'bustos',
'cumpleaños': '06/06'
}
const key1 = 'sessionKey'
console.log(CommonCipher.encryptAllValuesFromObject(body1, key1)) // { nombre: 'U2FsdGVkX1/QIlHBVeJeTUaSVfKRTlzEP9AyutgT0IY=', apellido: 'U2FsdGVkX1/MBSG+U5Jcp+s/ls9sKrqjr2VHk8uNReE=', cumpleaños: 'U2FsdGVkX1+tcm/kYQYhjgCuxJ18ZL1htaphYakqXVY=' }
decryptAllValuesFromObject
Descifra todos los valores de un objeto
Parámetro Tipo Valor esperado bodyIn String Objeto javascript con sus valores cifrados sessionKey String llave de cifrado
Ejemplos de uso
import { CommonCipher } from 'fif-common-cipher'
const body1 = {
nombre: 'U2FsdGVkX1/QIlHBVeJeTUaSVfKRTlzEP9AyutgT0IY=',
apellido: 'U2FsdGVkX1/MBSG+U5Jcp+s/ls9sKrqjr2VHk8uNReE=',
cumpleaños: 'U2FsdGVkX1+tcm/kYQYhjgCuxJ18ZL1htaphYakqXVY='
}
const key1 = 'sessionKey'
console.log(CommonCipher.decryptAllValuesFromObject(body1, key1)) // {'nombre': 'orlando', 'apellido': 'bustos', 'cumpleaños': '06/06'}
aesEncrypt
Cifra un texto utilizando el metodo AES
Parámetro Tipo Valor esperado plainText String Texto a cifrar key String llave para el cifrado
Ejemplos de uso
import { CommonCipher } from 'fif-common-cipher'
const text1 = 'Texto a cifrar'
const key1 = 'key'
console.log(CommonCipher.aesEncrypt(text1, key1)) // U2FsdGVkX1810E7huRN6xXzPp8Di2b092tz21MPx0s4=
aesDecrypt
Descifra un texto con el metodo AES
Parámetro Tipo Valor esperado cipherAEStext String Texto a descifrar key String llave para cifrado
Ejemplos de uso
import { CommonCipher } from 'fif-common-cipher'
const text1 = 'U2FsdGVkX1810E7huRN6xXzPp8Di2b092tz21MPx0s4'
const key1 = 'key'
console.log(CommonCipher.aesDecrypt(text1, key1)) // Texto a cifrar
sha256
Cifra un texto utilizando el algoritmo SHA-256
Parámetro Tipo Valor esperado textToDigest String Texto a cifrar
Ejemplos de uso
import { CommonCipher } from 'fif-common-cipher'
const text1 = 'Texto a digerir'
console.log(CommonCipher.sha256(text1)) // a83eb0ec95daa8b83f72bd21ebb5087ec90c70819f573ba9bcd16670b5d8876c
generateRandomKey
Genera una llave aleatoria segun un largo dado.
Parámetro Tipo Valor esperado keyLength Number Largo de la llave a generar (128/192/256)
Ejemplos de uso
import { CommonCipher } from 'fif-common-cipher'
const keyLength1 = 256
console.log(CommonCipher.generateRandomKey(keyLength1)) // 60efbeab4b0c666041377b8931cb74513b1ed48343a41f8a31f7912a5cd998ae
const keyLength2 = '192'
console.log(CommonCipher.generateRandomKey(keyLength2)) // b69b7318c2008b8f592587f06cd2eabd601a97c8383609c0
const keyLength3 = '128'
console.log(CommonCipher.generateRandomKey(keyLength3)) // 3abce289a39e6eb53f9834f59e72cddc