es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo encriptar datos json en un token JWE con jose

Quiero encriptar mi objeto JSON en un token JWE. Estoy utilizando el SDK de JOSE NuGet con el lenguaje C#. Estoy utilizando el algoritmo JweAlgorithm A256KW para la clave secreta y A256GCM para JweEncryption. ¿Podría alguien por favor ayudarme a descubrir qué estoy haciendo mal?

string key = "Some Key";

// Crear clave de seguridad usando la clave privada anterior:
// tenga en cuenta que la última versión de JWT utiliza el espacio de nombres Microsoft en lugar de System

var securityKey = new Microsoft.IdentityModel.Tokens.SymmetricSecurityKey(Encoding.UTF8.GetBytes(key));

// Algunos datos que contienen información sobre el cliente
var payload = new JwtPayload
                   {
                     { "page", "2"},
                     { "sc", "http://dummy.com/"},
                   };

var payload1 = Newtonsoft.Json.JsonConvert.SerializeObject(anyPayJson);

string token_1 = JWE.Encrypt(payload1, new[] { new JweRecipient(JweAlgorithm.A256KW, key, null) }, JweEncryption.A256GCM);

Soy nuevo en JOSE JWT y no tengo idea de cómo usar el algoritmo JWE para envolver la clave secreta. Estoy obteniendo un error al procesarlo:

El algoritmo de gestión de AesKeyWrap espera que la clave sea un arreglo de bytes.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema podría ser que estás pasando la variable ‘key’ como una cadena al constructor de JweRecipient, cuando en realidad espera un arreglo de bytes.

    Para solucionar esto, puedes convertir la cadena ‘key’ a un arreglo de bytes usando Encoding.UTF8.GetBytes() antes de pasarlo al constructor de JweRecipient:

    byte[] keyBytes = Encoding.UTF8.GetBytes(key);
    
    var recipient = new JweRecipient(JweAlgorithm.A256KW, keyBytes, null);
    
    string token = JWE.Encrypt(payload, new[] { recipient }, JweEncryption.A256GCM);
    

    Esto permitirá que JweRecipient utilice correctamente el algoritmo A256KW para envolver la clave secreta.

Comments are closed.