PowerShell: cifrar y descifrar datos mediante certificados (clave pública/clave privada)
Existen muchas herramientas de cifrado y descifrado. PowerShell es una herramienta integrada en Windows y también puedes usarla para criptografía. En esta publicación de blog voy a jugar con el cifrado y descifrado de datos. Mis seguidores saben lo que viene a continuación: no me importan mucho las herramientas de terceros y sí, por supuesto, solo voy a usar Windows PowerShell.
Introducción
En primer lugar necesitamos un certificado. Este certificado incluirá una clave privada y una clave pública. Con la clave privada podemos descifrar datos. Con la clave pública podemos cifrar datos. Esto significa que si alguien tiene mi clave pública (puedo dársela a alguien sin ninguna preocupación) puede cifrar los datos que están dirigidos a mí. Y soy el único en este planeta que puede descifrarlo. Porque soy el único que tiene la clave privada.
Crear un certificado con un nuevo certificado autofirmado
Primero creo un certificado de firma de código con PowerShell. Nómbralo como quieras.
New-SelfSignedCertificate -DnsName pewa2303 -CertStoreLocation "Cert:\CurrentUser\My" -KeyUsage KeyEncipherment,DataEncipherment, KeyAgreement -Type DocumentEncryptionCert
Para ver el certificado, ejecute certmgr.msc.
certmgr.msc
Oh, qué verguenza. ? Prometí que usaré solo PowerShell. Bien, bien, aquí está el comando para mostrar su certificado en PowerShell:
Get-Childitem -Path Cert:\CurrentUser\My -DocumentEncryptionCert
Memorice el nombre del sujeto de su certificado. Lo necesitaremos en el siguiente paso.
Cifrar datos
El cmdlet Protect-CmsMessage cifra el contenido. Asegúrate de estar ejecutando PowerShell 5.0 o superior.
(Get-Host).Version.Major
Preste atención al parámetro To. Debe proporcionar el nombre de su certificado allí. El nombre de mi certificado es cn=pewa2303. Los datos cifrados se almacenarán en un archivo.
"This is a secret message" | Protect-CmsMessage -To cn=pewa2303 -OutFile C:\Temp\secret.txt
Una vez completado, abra el archivo con el Bloc de notas para ver qué sucedió. Buen código ?
Descifrado de datos
Para descifrar los datos cifrados, ejecute Unprotect-CmsMessage. Asegúrese de haber iniciado sesión con la cuenta de usuario que creó el certificado y que tenga la clave privada.
Unprotect-CmsMessage -Path C:\Temp\secret.txt
Bonita.
¿Qué sucede cuando otro usuario intenta abrir el archivo? Petra no puede descifrar los datos. Ella no tiene la clave privada.
Unprotect-CmsMessage: el mensaje de datos envueltos no contiene el
destinatario especificado.








