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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
########################################################################################################## #Texto en ASCII ########################################################################################################## $val="hola" ########################################################################################################## #Representar el texto ASCII en HEX Write-Host "#############################################################" Write-Host "Representar el texto ASCII en HEX" Write-Host "#############################################################" ########################################################################################################## 0..($val.Length-1) | %{ $cadenah=[System.String]::Format("{0:X}", [System.Convert]::ToUInt32($val[$_])) Write-Host $val[$_],$cadenah } ########################################################################################################## #Representar el texto ASCII en binario Write-Host "#############################################################" Write-Host "Representar el texto ASCII en binario" Write-Host "#############################################################" #Los caracteres que tienen 6 bits de representación se añaden dos bits delante para que sean 8 bits #Los caracteres que tienen 7 bits de representación se añaden un bit delante para que sean 8 bits ########################################################################################################## $cadenabalmacen="" 0..($val.Length-1) | %{ $cadenah=[System.String]::Format("{0:X}", [System.Convert]::ToUInt32($val[$_])) $cadenab=([Convert]::ToString([Byte]::Parse($cadenah,[System.Globalization.NumberStyles]::HexNumber),2)) if($cadenab.Length -eq 6){$cadenab="00"+$cadenab} if($cadenab.Length -eq 7){$cadenab="0"+$cadenab} #Almacenar todos los valores representados en una variable $cadenabalmacen+=$cadenab Write-Host $cadenah,$cadenab } $cadenabalmacen ########################################################################################################## #Crear grupos de 6 bits para el resultado de la representación del texto ASCII en binario Write-Host "#############################################################" Write-Host "Crear grupos de 6 bits para el resultado de la representación del texto ASCII en binario" Write-Host "#############################################################" ########################################################################################################## for($i=0;$i -lt $cadenabalmacen.Length; $i=$i+6) { [String]$cadenabalmacen[($i)..($i+5)] -replace " " } ########################################################################################################## #Convertir los grupos de 6 bits a decimal Write-Host "#############################################################" Write-Host "Convertir los grupos de 6 bits a decimal" Write-Host "#############################################################" ########################################################################################################## #Hay que asegurarse que todas las agrupaciones tienen 6 bits, por eso es necesario añadir bits $bitsfaltan=([math]::Round($cadenabalmacen.Length/6)*6)-$cadenabalmacen.Length #Si añadimos dos bits tenemos que añadir el caracter = cuando codifiquemos en Base 64 al final de la codificación #Si añadimos cuatro bits tenemos que añadir los caracteres == cuando codifiquemos en Base 64 al final de la codificación $espacio="" for($i=0;$i -lt $cadenabalmacen.Length; $i=$i+6) { $binario=[String]$cadenabalmacen[($i)..($i+5)] -replace " " if($binario.Length -eq 4){$binario=$binario+"00";$espacio="="} if($binario.Length -eq 2){$binario=$binario+"0000";$espacio="=="} $binario,[convert]::ToInt32($binario,2) } ########################################################################################################## #Representar el texto decimal en caracteres ASCII Write-Host "#############################################################" Write-Host "Representar el texto decimal en caracteres ASCII" Write-Host "#############################################################" ########################################################################################################## $finalcodificado="" $cascii="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" for($i=0;$i -lt $cadenabalmacen.Length; $i=$i+6) { $binario=[String]$cadenabalmacen[($i)..($i+5)] -replace " " if($binario.Length -eq 4){$binario=$binario+"00";$espacio="="} if($binario.Length -eq 2){$binario=$binario+"0000";$espacio="=="} $finalcodificado+=$cascii[[convert]::ToInt32($binario,2)] } $finalcodificado+$espacio |