[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 |