Sarazin73
Hola,
busco descifrar valores de cadena de una columna encriptada en una tabla importada como una consulta en mi informe de Power BI.
La cadena se cifra en la entrada con un algoritmo XOR de la siguiente manera:
String ToCrypt = «»;
for (int i = 0; i <"sample_string" .length (); i ++) {
ToCrypt = ToCrypt + (char) («sample_string» .charAt (i) ^ 24); // (XOR 24)
}
¿Cómo puedo hacer en Power Query para descifrar en una nueva columna el contenido de esta columna encriptada para cada fila de mi consulta? (conjunto de datos). Gracias por tus ideas y comentarios.
Nolock
En respuesta a Sarazin73
Hola @ Sarazin73,
He escrito una función personalizada para ti:
fnXorCrypt = ( string as text, xorValue as number ) as text => // concat encrypted characters List.Accumulate( // get a list of chars Text.ToList(string), // initial string "", // accumulate last state and a new encrypted character (state, current) => state & Character.FromNumber( Number.BitwiseXor( Character.ToNumber(current), xorValue ) ) )
El uso:
EncodedString = fnXorCrypt("Lundi", 42)
Una prueba:
Nolock
Hola @ Sarazin73,
¿También tiene el algoritmo de descifrado en código tipo c? Si tuviera uno, desarrollaría una función en M para ti.
¿Y puedes publicar algunos ejemplos para probar?
Gracias 🙂
Sarazin73
En respuesta a Nolock
Hola,
¡Gracias por ayudarme!
El algoritmo utilizado es el mismo para descifrar que para cifrar. El script externo inicial que codifica los datos como fuente está en lenguaje java. Finalmente hemos hecho pruebas con XOR 42 en lugar de XOR 24. A continuación, algunas muestras con su correspondiente cadena de codificación.
Lundi: f_DNC
Mardi: gKXNC
Mercredi: gOXIXONC
Jeudi: `O_NC
Vendredi: | ODNXONC
Samedi: yKGONC
Dimanche: nCGKDIBO
Nolock
En respuesta a Sarazin73
Hola @ Sarazin73,
He escrito una función personalizada para ti:
fnXorCrypt = ( string as text, xorValue as number ) as text => // concat encrypted characters List.Accumulate( // get a list of chars Text.ToList(string), // initial string "", // accumulate last state and a new encrypted character (state, current) => state & Character.FromNumber( Number.BitwiseXor( Character.ToNumber(current), xorValue ) ) )
El uso:
EncodedString = fnXorCrypt("Lundi", 42)
Una prueba:
Sarazin73
En respuesta a Nolock
Hola NoLock,
gracias por tu trabajo. Es perfecto !