1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
$TDESKEY = [System.Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes('hola')) # CIFRAR $password = "Im a password" $MS = New-Object System.IO.MemoryStream $keyb = [Convert]::FromBase64String($TDESKEY) $TD = New-Object System.Security.Cryptography.DESCryptoServiceProvider $CS = New-Object System.Security.Cryptography.CryptoStream($MS,$TD.CreateEncryptor($keyb, $TD.IV), [System.Security.Cryptography.CryptoStreamMode]::Write) $Writer = New-Object System.IO.StreamWriter($CS) $Writer.Write($password) $Writer.Flush() $CS.FlushFinalBlock() #$MS.Seek(0, [System.IO.SeekOrigin]::Begin) > NULL #not sure of its utility $EncodedText = [Convert]::ToBase64String($MS.ToArray()) $IVS = [Convert]::ToBase64String($TD.IV) $EncryptedData = "${IVS}:$EncodedText" $Writer.Dispose() $EncryptedData ## Intentar descifrar la información que se ha cifrado con DES leyendo de un fichero palabras "casa" > diccionario.txt "hola" >> diccionario.txt foreach($palabra in gc .\diccionario.txt) { try{ $Result = "" $Data = $EncryptedData.Split(':') $TD = New-Object System.Security.Cryptography.DESCryptoServiceProvider $TDESKEY = [System.Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($palabra)) $Key = [Convert]::FromBase64String($TDESKEY) $IV = [Convert]::FromBase64String($Data[0]) $DataByte = [Convert]::FromBase64String($Data[1]) $MS = New-Object System.IO.MemoryStream(,$DataByte) #array of one item must have a preceding coma $CS = New-Object System.Security.Cryptography.CryptoStream($MS,$TD.CreateDecryptor($Key,$IV), [System.Security.Cryptography.CryptoStreamMode]::Read) $Reader = New-Object System.IO.StreamReader($CS) $Result = $Reader.ReadToEnd() $Reader.Dispose() "Descifrado con el password $palabra. Mensaje: $Result" } catch{ "Error con el password $palabra" } } |
