Base64 문자열을 디코딩하려면 어떻게 해야 합니까?
에는 Base64 텍스트를 포함하는 텍스트 파일에서 가져온 일반 . 이 문자열은 Powershell에 저장되어 있습니다.$x. 이렇게 해독하려고 합니다 이겁니다.
$z = [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($x));
이렇게 하면 됩니다.$xPowershell은 Base64입니다.그리고 이건 안 돼요.$x파일에서 가져온 Base64 문자열입니다.$z그냥 그런 식으로 끝나게 됩니다.䐲券요.
가가무 무무 ?? ??? ??? ???예를 들면요.$x★★★★★★★★★★★★★★★★★★★★★★★★★★.YmxhaGJsYWg=Base64는 Base64로 Base64는 Base64는 Base64는 Base64는 Base64는 Base64는 Base64입니다.blahblah요.
한마디로 말해서요.YmxhaGJsYWg= 파일에 다음 이 Powershell 코드의 문자열에 넣습니다. 디코딩을 시도하지만 결국 텍트파파파있있다다 is is is로 끝납니다. 그리고 이 파워셸 코드의 문자열에 넣습니다. 그리고 나는 그것을 해독하려고 노력하지만 결국 이 됩니다.䐲券
인코딩은 텍스트를 Base64로 보내고 디코딩은 Base64로 되돌리는 것 아닌가요?여기서 섞는 것 같아요.이 온라인 디코더를 사용하여 디코딩하면 다음과 같은 결과가 나옵니다.
BASE64: blahblah
UTF8: nVnV
다른 길이 아니다.PS로 완벽하게 재현할 수는 없지만요.아래 샘플을 참조하십시오.
PS > [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("blahblah"))
nV�nV�
PS > [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("nVnV"))
blZuVg==
편집 텍스트에 잘못된 인코더를 사용하고 있는 것 같습니다.인코딩된 base64 문자열은 UTF8(또는 ASCII) 문자열에서 인코딩됩니다.
PS > [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("YmxhaGJsYWg="))
blahblah
PS > [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String("YmxhaGJsYWg="))
汢桡汢桡
PS > [System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String("YmxhaGJsYWg="))
blahblah
Base64 변환을 위한 PowerShell 네이티브 명령은 아직 없지만(PowerShell [Core] 7.1 이후), GitHub 호 #8620에서 전용 cmdlet을 추가하는 것이 제안되었습니다.
이겁니다.NET입니다.
중요:
Base64 인코딩은 인쇄 가능한 문자를 나타내는 ASCII 문자 집합의 잘 정의된 64자 하위 범위로 제한된 바이트를 사용하는 이진 데이터를 인코딩하는 것으로, 특히 높은 비트 집합(바이트 값 > 0x7f)에서 임의 바이트를 전송하는 데 문제가 있을 때 고안되었습니다.
따라서 항상 Base64 바이트가 /를 나타내야 하는 문자를 명시적으로 지정해야 합니다.
Ergo: (에르고:)
Base64로 변환할 때 먼저 Base64 문자열의 소비자가 예상하는 문자를 사용하여 인코딩하려는 문자열의 바이트 표현을 가져와야 합니다.
FROM Base64를 변환할 때 결과 바이트 배열을 Base64 표현을 생성하는 데 사용된 것과 동일한 인코딩을 사용하여 문자열로 해석해야 합니다.
예를 들어 다음과 같습니다.
참고:
다음 예제에서는 UTF-8 인코딩 문자열로 변환하거나 UTF-8 인코딩 문자열에서 변환합니다.
대신 UTF-16LE("Unicode")로 변환하거나 UTF-16LE("유니코드")에서 변환하려면 다음을 대체합니다.
[Text.Encoding]::Unicode위해서[Text.Encoding]::UTF8
Base64로 변환합니다.
PS> [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes('Motörhead'))
TW90w7ZyaGVhZA==
Base64에서 변환합니다.
PS> [Text.Encoding]::Utf8.GetString([Convert]::FromBase64String('TW90w7ZyaGVhZA=='))
Motörhead
이 페이지는 base64로 변환하는 방법을 구글로 검색하면 표시되므로, 다음과 같이 완성할 수 있습니다.
$b = [System.Text.Encoding]::UTF8.GetBytes("blahblah")
[System.Convert]::ToBase64String($b)
Base64 인코딩은 3개의 8비트 바이트(0-255)를 4개의 6비트 바이트(0-63 base64)로 변환합니다.4바이트 각각은 최종 출력을 4개의 8비트 ASCII 문자로 나타내는 ASCII 문자열을 인덱싱합니다.인덱스된 문자열은 일반적으로 'A-Za-z0-9+/'이며 '='은 패딩으로 사용됩니다.이것이 인코딩된 데이터가 4/3 더 긴 이유입니다.
Base64 디코딩은 역 프로세스입니다.디코딩된 데이터는 예상대로 3/4입니다.
base64 인코딩은 일반 텍스트를 인코딩할 수 있지만, 실제 이점은 시스템을 제어 문자로 전송하여 해석할 수 있는 인쇄 불가능한 문자를 인코딩하는 것입니다.
원본 포스터는 $z를 각 비트가 애플리케이션에 의미가 있는 바이트로 렌더링할 것을 제안합니다.인쇄할 수 없는 문자를 텍스트로 렌더링하면 일반적으로 유니코드가 호출되어 시스템 현지화에 따라 글리프가 생성됩니다.
Base64decode("우주와 모든 것의 삶에 대한 해답") = 001010
Powershell의 파이프(예: 파일 내용 읽기 및 디코딩)로 작업을 수행하려는 사람은 다음과 같은 단일 라이너로 작업을 수행할 수 있습니다.
Get-Content base64.txt | %{[Text.Encoding]::UTF8.GetString([Convert]::FromBase64String($_))}
출력 사이에 공백이 표시되는 문제가 발생했으며 온라인에서는 이 문제를 해결할 답변이 전혀 없습니다.저는 문자 그대로 해결책을 찾기 위해 많은 시간을 보냈고, 코드를 만지작거리다가 코드를 찾았고, 작동시킬 당시에는 무엇을 입력했는지조차 거의 알 수 없었습니다.이 문제에 대한 해결 방법은 다음과 같습니다.[System.Text.Encoding]::UTF8.GetString(([System.Convert]::FromBase64String($base64string)|?{$_}))
MS가 작성한 "빌트인"은 아니지만 갤러리에 게시되었습니다.
https://github.com/powershell/textutility
텍스트유틸리티입니다.
- 변환원-Base64입니다.
base64에서 디코딩된 문자열을 반환합니다. - Base64로 변환합니다.
base64로 인코딩된 문자열 표현을 반환합니다.
언급URL : https://stackoverflow.com/questions/15414678/how-to-decode-a-base64-string 입니다.
'programing' 카테고리의 다른 글
| UNIX 내보내기 명령입니다. (0) | 2023.04.25 |
|---|---|
| NPOI를 사용하여 파일을 읽는 방법입니다. (0) | 2023.04.25 |
| HTML 표를 Excel에 붙여넣습니다. 줄 바꿈을 셀에 유지하는 방법 (0) | 2023.04.25 |
| Android SQLite에서 날짜를 사용하는 가장 좋은 방법입니다. (0) | 2023.04.25 |
| Azure 서비스 버스 에뮬레이터입니다. (0) | 2023.04.25 |