Envader에서 학습한 보안 기반인 "간단한 암호화에 대해"에 갑자기 걸려 넘어졌습니다. 그러니 설명해 보십시오.
나는 Envader에서 안전 기초를 배우고 있다.
실제로 간단한 암호를 해독할 때 파이톤이 전혀 할 줄 몰라서 실패해서 달갑지 않아요. 그래서 제가 열심히 공부한 부분을 정리하고 싶어요.
전제 지식
왜 운영되는지 모르겠는데?파이톤의 지식이 필요하다고 하니 모르면 건너뛰세요.
Prograte Python을 통해 사칙연산을 알 수 있습니다!수평적으로는 거의 눈물투성이다.
(학교에서 한 번 배웠지만 그때는 그 가치를 이해하지 못했고 이후에는 전혀 활용하지 않아 기억이 백지로 변해가는데...)
간단한 복호화
암호화를 인코딩(Encode), 해독을 디코딩(Decode)이라고 합니다.
간단한 암호라면 암호화 알고리즘을 알면 사진 반대 순서로 복호화할 수 있다.
예를 들어, 다음 암호는 [문자열 반전]에 불과하며 같은 단계를 반복하면 복합을 수행할 수 있습니다.
# 暗号化
text = "Hello World"
print(text[::-1])
dlrow olleh
# 復号
text = "dlrow olleh"
print(text[::-1])
Hello World
!파이썬 초초보자
[::-1]
로서 슬라이스 단계에서 마이너스를 지정해 반전시킨다는 개념을 몰랐기 때문에 처음에는 이해할 수 없었지만 다음 링크를 통해 깨달았다.문제 1 해결 방법
다음은 본론.첫 번째 학자는 뭘 쓰는지도 모르고 격침했다 w
질문 1. 다음은 level-1.py로 암호화되었습니다.시크릿을 디코딩하십시오.
sfeuiyC;iAc89895j78>6b:5h8j<8=89:;95j@9
level_1.py의 내용을 보면 풀 수 있으니 한번 보세요.level_1.py
text = "secret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
encrypted_text = ""
for i, v in enumerate(text):
encrypted_text += chr(ord(v)+(i % 10))
print(encrypted_text)
첫 번째 학자에게 초면살도 좋은 곳이지만 하나하나 해석해 보면 이해할 수 있다.enumerate()
list의 매개 변수에서 반복적으로 지정할 수 있는 대상을 지정하면 색인 번호와 요소를 얻을 수 있습니다.chr
근거파이썬 공식 참조유니코드 코드점이 정수 i인 문자를 나타내는 문자열을 반환합니다.
ord
근거파이썬 공식 참조문자를 나타내는 유니코드 코드 점의 정수를 반환합니다.
잘 모르겠지만 문자열을 캐릭터 코드로 변환한 후
+(i % 10)
이기 때문에 더 복잡한 암호화 처리를 위한 것으로 여겨지기 때문에 반대로 조작하면 된다(잡다)답은 다음과 같다.
질문 1의 답안
encrypted_text = "sfeuiyC;iAc89895j78>6b:5h8j<8=89:;95j@9"
text= ""
for i, v in enumerate(encrypted_text):
# 復号するため-(i % 10)とした
text += chr(ord(v)-(i % 10))
print(text)
참조 소스: 간단한 암호화 정보문제2 꼭 사용해 보세요Envader.
배운 것
비밀번호 기초를 배우러 왔는데 파이썬 기초를 배우지 못했어요.
프로그램의 어디에서 복잡한 처리를 하는지 알면 풀 수 있을 것 같다.
안전에 더해 특히 비밀번호를 배울 때 파이톤을 깊이 이해하는 것이 필수적인 기술인 만큼 현재 열심히 공부하고 있다.
참고 자료
지금까지 배운 기본 보안
자유 이미지
Reference
이 문제에 관하여(Envader에서 학습한 보안 기반인 "간단한 암호화에 대해"에 갑자기 걸려 넘어졌습니다. 그러니 설명해 보십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/terralien/articles/94d615aa8a2b25텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)