휴지통

ascii code로 암호화 해주는 사이트

integerJI 2020. 2. 16. 00:49

[django] ascii code로 암호화 해주는 사이트

 

word count를 진행하며 재미있을 거 같은 기능이 생각났다.

 

문자열을 ascii code로 암호화 하여 바꿀 수 있다면??

 

친구들한테 장난치기 딱 좋을 거 같아 만들어 보기로 하였다.

 

기본 진행은 hello world 띄우기 -> page 이동 -> word count 실습 이후로 진행하겠습니다.

 

-----------------------------------------------------------------------------------------------------------------------------------vscode 설치하기 : https://integer-ji.tistory.com/65

python 설치하기 : https://integer-ji.tistory.com/64

git 설치하기 : https://integer-ji.tistory.com/66

 

vscode 설정하기 : https://integer-ji.tistory.com/81

 hello world 띄우기 : https://integer-ji.tistory.com/82

git 초기 설정 : https://integer-ji.tistory.com/83

 page 이동 : https://integer-ji.tistory.com/84

☞ word count 실습 ( 1 ) : https://integer-ji.tistory.com/85

word count 실습 ( 2 ) : https://integer-ji.tistory.com/86

-----------------------------------------------------------------------------------------------------------------------------------

 

완성 git : https://github.com/integerJI/ascii_code_int

 

완성본 : https://ascii-code.herokuapp.com/

word count 실습 ( 1 ) 까지 진행 확인

<h1>쉿 비밀이야!</h1>

<br><br>
<form action="{% url 'encryption' %}">
    <textarea cols="40" rows="10" name='fulltext'></textarea>
    <br><br>
    <input type="submit" value="변환하기" />
</form>

 

home.html

 

new.html 대신 encryption.html을 만들어 주었다.

 

이제 fulltext에서 넘어가는 문자를 ascii코드로 바꿔주어야 하는데

 

https://integer-ji.tistory.com/87

 

를 한번 보면 좋다.

 

하지만 여러개의 글자를 받아 아스키코드로 바꿔주어야 한다..

 

views.py 함수 설정

from django.shortcuts import render

# Create your views here.

def home(request):
    return render(request, 'home.html')

def encryption(request):

    full_text = request.GET['fulltext']
    list_text = list(map(str,full_text))
    dic_text = []

    for i in list_text:
        ascii_text = hex(ord(i)).replace("0x","")
        dic_text.append(ascii_text)

    return render(request, 'encryption.html', { 'ascii': dic_text } )

 

머리를 좀 써야했다.

 

먼저 home에서 받은 fulltext를 받아 full_text에 넣어주었다.

 

한 글자에만 ord를 사용할 수 있으므로..

 

list를 만들어 주었다.

 

이 리스트는 full_text를 올 때 문자를 전부 하나씩 나눠서 저장해 준다.

 

저장할 때 str형식으로 map 해주었다.

( ord는 str형식의 문자를 바꿀 수 있기 때문 )

 

그리고 dic_text라는 빈 배열 생성

 

for문을 돌려 list_text를 가져온다.

( list_text 에는 입력한 문자를 하나씩 나눠서 가지고 있다. )

 

i에 넣으면서 반복

 

ascii_text는 ord를 사용해 ascii코드로 변환 그리고 hex를 통해 16진수로 변환해준다.

 

변환된 16진수에 replace함수를 통해 0x를 제거해준다.

 

그 값을 dic_text에 추가한다.

 

abc를 입력하게 된다면

 

list에 담을 때에는 'a', 'b', 'c'가 담긴다.

 

이제 for문을 돌려 a는 ascii코드로 변환되고 변환된 게 다시 16진수로 변환되고 변환된 16진수에 0x가 빠진다.

 

그 하나의 값을 dic_text에 추가한다

 

라는 뜻이다.

 

html에 출력하기 위해

 

'ascii': dic_text }

 

 

html 확인

<h1>비밀</h1>

{% for secret in ascii %}
{{ secret }}
{% endfor %}

 

ascii에 담긴 값들을 for문을 돌려 출력하였다.

 

결과물을 확인해 보면

 

 

hello world 입력 후 변환하기 클릭

 

 

정상적으로 띄어쓰기(공백)까지 변환이 되었다.

 

완성본 확인하기

 

---

 

옛날부터 정말 만들어보고 싶었는데 드디어 만들었다 

 

이걸로 재미있게 놀 수 있게 되었다.

'휴지통' 카테고리의 다른 글

기록 - 글쓰기  (0) 2020.03.23
기록 - 회원가입  (0) 2020.03.22
python 문자를 아스키코드로 변환하기  (0) 2020.02.16
Java Spring 기록 3  (0) 2020.01.27
Java Spring 기록 2  (0) 2020.01.26