일반 문자열 (이진 문자열이어야 함)을 다시 이진 문자열로 변환

manumanu12

그래서 저는 현재 도서관에서 일하고 있습니다 : simple-crypt.

특정 입력 문자열을 이진 문자열로 변환했습니다.

        pw_data = input("Please type in your p!")  # enter password
        pw_data_confirmed = input("Please confirm!")
        _platform = input("Please tell me the platform!")  # belonging platform
        if pw_data == pw_data_confirmed:  # check confirmed pw
            print("Received!")

            salt_data = "AbCdEfkhl"  # salt key

            ciphertext = encrypt(salt_data, pw_data.encode("utf8"))  # encrypt pw with salt key

바이너리 문자열 예 : b'sc \ x00 \ x02X \ xd8 \ x8ez \ xbfB \ x03s \ xc5 \ x8bm \ xecp \ x19 \ x8d \ xd6lqW \ xf1 \ xc3 \ xa4y \ x8f \ x1aW) \ x9bX \ xfc \ x0e \ xa4 \ xf2ngJj /] {\ x80 \ x06- \ x07 \ x8cQ \ xeef \ x0b \ x02? \ x86 \ x19 \ x98 \ x94eW \ x08} \ x1d8 \ xdb \ xe57 \ xf7 \ x97 \ x81 \ xb6 \ xc7 \ x08 \ n ^ \ xc9 \ xc0 '

이 바이너리 문자열은 워드 문서에 저장됩니다.

이제 문제는 다음과 같습니다. 문서를 읽고이 특정 이진 문자열을 얻으면 더 이상 이진 문자열로 인식하지 못합니다. 대신 이제 데이터 유형 문자열입니다.

p_loc = input("Which platform do you need?")
doc_existing = docx.Document(r"xxx")
text = []
for i in doc_existing.paragraphs:
    text.append(i.text)

for pos,i in enumerate(text):
    if i == p_loc:
    len_pos = len(text[pos+1])
    p_code = text[pos+1][2:len_pos-1]  # get the binary string which is of type ordinary string
print(p_code.encode("utf8"))  # when I apply .encode , another \ is added so I have for my binary code two \\


salt_data = "AbCdEfkhl"

plain = decrypt(salt_data, p_code)

print(plain)

.encode 문이없는 p_code (바이트 문자열이 아닌 문자열로!) : sc \ x00 \ x02X \ xd8 \ x8ez \ xbfB \ x03s \ xc5 \ x8bm \ xecp \ x19 \ x8d \ xd6lqW \ xf1 \ xc3 \ xa4y \ x8f \ x1aW ) \ x9bX \ xfc \ x0e \ xa4 \ xf2ngJj /] {\ x80 \ x06- \ x07 \ x8cQ \ xeef \ x0b \ x02? \ x86 \ x19 \ x98 \ x94eW \ x08} \ x1d8 \ xdb \ xe57 \ xf7 \ x97 \ x81 \ xb6 \ xc7 \ x08 \ n ^ \ xc9 \ xc0

이제 p_code.encode ( "utf8")를 인쇄하면 다음과 같은 결과가 나타납니다. b'sc \\ x00 \\ x02X \\ xd8 \\ x8ez \\ xbfB \\ x03s \\ xc5 \\ x8bm \\ xecp \ \ x19 \\ x8d \\ xd6lqW \\ xf1 \\ xc3 \\ xa4y \\ x8f \\ x1aW) \\ x9bX \\ xfc \\ x0e \\ xa4 \\ xf2ngJj /] {\\ x80 \\ x06- \ \ x07 \\ x8cQ \\ xeef \\ x0b \\ x02? \\ x86 \\ x19 \\ x98 \\ x94eW \\ x08} \\ x1d8 \\ xdb \\ xe57 \\ xf7 \\ x97 \\ x81 \ \ xb6 \\ xc7 \\ x08 \\ n ^ \\ xc9 \\ xc0 '

따라서 문제는이 두 번째 이진 문자열을 원래 이진 문자열과 비교하면 두 번째 이진 문자열에 \가 추가된다는 것입니다. 결과적으로이 이진 문자열을 원래 이진 코드 문자열로 인식하지 못하므로 디코딩 할 수 없습니다.

그래서 내 질문은 : 이미 이진 스타일의 문자열을 이진 문자열로 다시 변환하여 동일하게 만드는 캐주얼 한 방법이 있습니까? 아니면 원래 이진 문자열을 다시 가질 수 있도록 두 번째 \를 제거 할 수있는 방법이 있습니까?

도움을 주셔서 감사합니다 !!

톰 달튼

확인. 그래서 당신이 f"{ciphertext}"파이썬에게 그 바이트 문자열 표현 을 텍스트로 문서 에 저장하도록 지시 합니다.

>>> b = b"\x00\x01\x65\x66"
>>> print(f"{b}")
b'\x00\x01ef'

당신은 (아마) b'\x00\x01ef'당신의 워드 문서 에 저장하고 싶지 않을 것 입니다. 이진 데이터를 텍스트 형식으로 저장하는 좋은 일반적인 방법은 다른 인코딩을 사용하는 것입니다. Base64는 이진 데이터를 텍스트 기반 형식으로 저장하기 위해 일반적으로 사용되는 인코딩입니다.

자세한 내용은 https://docs.python.org/3/library/base64.html참조 하세요 .

귀하의 경우에는 다음과 같이하십시오.

import base64

cipher_b64_b = base64.b64encode(ciphertext)
cipher_b64 = cipher_b64_b.decode() # cipher_b64 is now a string.
# Now store this cipher_b64 string in your word document

...

# Now you fetch p_code (which is now a base64 string) from your word doc
cipher_b64_b = p_code.encode()
cipher = base64.b64decode(cipher_b64_b)

이로 인해 원래 이진 암호문이 생성됩니다. 워드 문서에는 "AAFlZg =="와 같은 base64 인코딩 문자열이 포함되어 워드 문서에서 이스케이프 시퀀스 등의 문제를 방지합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

이진 문자열을 이진 문자열로 변환

분류에서Dev

이진 문자열 (ASCII)을 이진 파일로 변환

분류에서Dev

바이너리 문자열을 다시 일반 문자열로 변환

분류에서Dev

문자열을 이진으로 변환?

분류에서Dev

혼합 이진 문자열 표현을 다시 이진으로 변환

분류에서Dev

이진 문자열을 부울 배열로 변환하고 이진 파일을 출력합니다.

분류에서Dev

파일을 이진 문자열로, 이진에서 파일로 변환

분류에서Dev

문자열을 이진 시퀀스로 변환

분류에서Dev

Python 이진 문자열을 이진 정수로 변환

분류에서Dev

Java 일반 바이트 배열을 문자열로 변환 (16 진수가 아닌 10 진수)

분류에서Dev

이진 문자열을 바이트 배열로 변환

분류에서Dev

Java에서 큰 이진 문자열을 10 진수로 변환

분류에서Dev

이진 문자열을 10 진수로 변환

분류에서Dev

16 진수 문자열을 이진 SQL Server로 변환

분류에서Dev

문자열 배열을 바이트 배열로 다시 변환

분류에서Dev

문자열 배열이 주어지면 회문 만 포함하는 문자열 배열을 반환합니다.

분류에서Dev

문자열 배열이 주어지면 회문 만 포함하는 문자열 배열을 반환합니다.

분류에서Dev

16 진수 문자열을 C #에서 일반 문자열로 변환

분류에서Dev

1과 0의 문자열을 이진 표현으로 10 진수로 변환해야합니다.

분류에서Dev

ASCII 16 진 문자열을 바이트 배열로 변환

분류에서Dev

16 진수 문자열을 바이트 배열로 변환

분류에서Dev

16 진 문자열을 바이트 배열로 변환

분류에서Dev

문자열을 16 진수 배열 데이터로 변환

분류에서Dev

Ruby에서 문자열을 숫자 이진 값으로 변환

분류에서Dev

node.js는 이진 문자열을 숫자로 변환

분류에서Dev

주어진 문자열에서 이메일을 찾고 문자열에있는 이메일을 반환합니다.

분류에서Dev

이스케이프 된 문자열을 원래 문자열로 다시 변환

분류에서Dev

일반 텍스트가있는 문자열을 16 진 스타일의 바이트 배열로 변환?

분류에서Dev

주어진 문자에서 문자열을 분할하고 분할 후 문자열 배열을 반환하는 C 함수 구현 (배열 길이와 함께)

Related 관련 기사

  1. 1

    이진 문자열을 이진 문자열로 변환

  2. 2

    이진 문자열 (ASCII)을 이진 파일로 변환

  3. 3

    바이너리 문자열을 다시 일반 문자열로 변환

  4. 4

    문자열을 이진으로 변환?

  5. 5

    혼합 이진 문자열 표현을 다시 이진으로 변환

  6. 6

    이진 문자열을 부울 배열로 변환하고 이진 파일을 출력합니다.

  7. 7

    파일을 이진 문자열로, 이진에서 파일로 변환

  8. 8

    문자열을 이진 시퀀스로 변환

  9. 9

    Python 이진 문자열을 이진 정수로 변환

  10. 10

    Java 일반 바이트 배열을 문자열로 변환 (16 진수가 아닌 10 진수)

  11. 11

    이진 문자열을 바이트 배열로 변환

  12. 12

    Java에서 큰 이진 문자열을 10 진수로 변환

  13. 13

    이진 문자열을 10 진수로 변환

  14. 14

    16 진수 문자열을 이진 SQL Server로 변환

  15. 15

    문자열 배열을 바이트 배열로 다시 변환

  16. 16

    문자열 배열이 주어지면 회문 만 포함하는 문자열 배열을 반환합니다.

  17. 17

    문자열 배열이 주어지면 회문 만 포함하는 문자열 배열을 반환합니다.

  18. 18

    16 진수 문자열을 C #에서 일반 문자열로 변환

  19. 19

    1과 0의 문자열을 이진 표현으로 10 진수로 변환해야합니다.

  20. 20

    ASCII 16 진 문자열을 바이트 배열로 변환

  21. 21

    16 진수 문자열을 바이트 배열로 변환

  22. 22

    16 진 문자열을 바이트 배열로 변환

  23. 23

    문자열을 16 진수 배열 데이터로 변환

  24. 24

    Ruby에서 문자열을 숫자 이진 값으로 변환

  25. 25

    node.js는 이진 문자열을 숫자로 변환

  26. 26

    주어진 문자열에서 이메일을 찾고 문자열에있는 이메일을 반환합니다.

  27. 27

    이스케이프 된 문자열을 원래 문자열로 다시 변환

  28. 28

    일반 텍스트가있는 문자열을 16 진 스타일의 바이트 배열로 변환?

  29. 29

    주어진 문자에서 문자열을 분할하고 분할 후 문자열 배열을 반환하는 C 함수 구현 (배열 길이와 함께)

뜨겁다태그

보관