C언어 이 방식은 복호화가 불가능할까요?
글쓴이: msms772 / 작성시간: 월, 2021/06/07 - 1:39오전
안녕하세요. 프린이 새내기입니다.
6.8일, 팀프로젝트 발표해야하는데 아직도 막히고있는 부분이 있습니다 ㅠㅠ
먼저 암호화 방법은 이렇습니다.
(알파벳only)문장단위로 끊어서 읽고, 다른 글자가 나올때까지 한 반복되는 문자의 갯수를 적어주는 것입니다.
가령,
HELLO WORLD
AAABBCCCCC
란 텍스트 파일이 있다면 그걸 읽고
HEL20 WORLD (L이 두개==L2)
A3B2C5 (A가 3개, B가 2개, C가 5개 ==A3B2C5)
이렇게 새로운 텍스트 파일에 저장합니다.
이후 암호화된 문자열을 원래대로 돌려주는 복호화를 해야하는데 이런 방식이 가능할지도 가늠이 안됩니다 ㅠㅠ
시간이 얼마 안남았는데 이제 와서 암호화 방식을 바꿀지 말지도 고민이네요.
고수분들 도움! 부탁드립니다.
Forums:
팀원 동의는 받았나요?
무슨 답변이 이러냐고 불만을 제기하신다면
https://wiki.kldp.org/wiki.php/DocbookSgml/Beginner_QA-KLDP#AEN70
를 먼저 읽어보실 것을 추천합니다.
세벌 https://sebuls.blogspot.kr/
답변도 그닥..
질문의 수준을 논하기 이전에 답변의 수준도 좀 ..
답하기 싫으면 안하면 될일입니다.
------------------------------------------------------------
ProgrammingHolic
제목은 질문내용을 요약하라.
제목은 질문내용을 요약하라.
라는 항목이
https://wiki.kldp.org/wiki.php/DocbookSgml/Beginner_QA-KLDP#AEN70
에 있지요.
오해 없기를.
세벌 https://sebuls.blogspot.kr/
저는 생각이 좀 다릅니다.
수준이라는 건 늘 주관적인 것이지요.
저도 나름의 판단 기준이 있기는 합니다만 별로 남에게 강요하고 싶은 생각은 안 듭니다.
======
그보다는 명백히 틀린 답변을 걸어놔서 잘못된 정보를 확산시키는 답변들이 더 심각한 문제 아닐까요.
예를 들어... https://kldp.org/node/161983
확실히 그런 문제가 있을것같긴합니다.
새벽에 고민해봤었지만 저부분이 아예 없으면 이해가 안될것같아 썻습니다.
다시 생각해보니 그럴수 있을것같아 코드 부분은 삭제할 생각입니다.
HELLO -> HEL2O는 암호화되었다고 보기에
HELLO -> HEL2O는 암호화되었다고 보기에 어려워 보입니다. 더군다나 WORLD -> WORLD는 전혀 인코딩되지 않는 단점이 있네요.
HELLO -> ~*d#x 같은 식으로 원래 문장을 전혀 유추할 수 없어야 합니다.
보통 암호화는 암호화 key (0x1234 등)를 두고 입력값과 암호키의 bit shift, and/or, xor 등의 동작을 통해 이루어지고 복호화는 그 역순으로 bit operation을 했을 때 원래 값이 얻어집니다.
질문하신 내용으로 봐서 RSA 같은 것을 하는 것은 목표가 아닌 듯 보이네요. 암호화 입문(?) 같은 인터넷 블로그를 읽어 보세요.
그렇게 복잡한 수준이 아니긴합니다.
완전 못 알아볼정도로 암호화하는게 중점이 아니라
패킷손상이 있어도 원래대로 복원하는 신뢰성에 다들 인원이 몰려있거든요..
암호화 입문? 알아봐야 겠습니다. 감사합니다!
암호화가 아니라 (아주 기초적인 수준의) 압축이군요.
암호화가 아니라 (아주 기초적인 수준의) 압축이군요.
입력이 알파벳 문자열로만 들어온다면 잘 동작할 것으로 보입니다.
그렇지 않다면 어떻게 되는지는 연습 문제로 남기지요.
올리신 코드 실행하면 아래와 같이 의도와 다르게
올리신 코드 실행하면 아래와 같이 의도와 다르게 나옵니다.
팀원도 테스트 안하고 보내시고 글쓴이도 테스트 안해보셨군요.
과제에서 요구하는 암호화요건이 어느정도인지 모르겠으나
암호화 방식을 바꿀 시간이 된다면 조금 더 공들여 만드시면 좋겠고,
그럴 겨를이 없는 상황이라면 팀원에게 버그 수정하게 하시고
글쓴이는 복호화 함수 만드시면 되겠습니다.
암호화 코드 참고해서 하면 되겠네요.
어? 왜 다르게 나오지요..
코드를 잘라서 올린게 문제가 아닌가 싶은데,
풀 코드에선 의도한대로 작동이 됩니다.
이걸 원래 맡았던 팀원도 신뢰성 파트 도와주러 가서 제가 토스받은건데
전 암호화부터 이해가 안되네요 ㅠ
조언 감사합니다.
잠시 살펴보니, 이전에 올리신 코드의 file
잠시 살펴보니, 이전에 올리신 코드의 file_read() 함수에서 while 루프 시작하기 전에 쓸데없이 fgetc(fp)를 실행하면서 첫 번째 바이트를 그냥 버리는 버그가 있습니다. 그리고 description_encode() 함수에도 중간에 불필요한 fprintf(fp, "n") 한 줄이 들어가서 결과를 왜곡하고 있고요.
원본코드는 잘 동작했는지 몰라도, 잘라 올리셨던 코드에는 뒤의 두 가지 버그가 있었습니다.
지금 하시는 방법이 바로 "런 렝스(Run
지금 하시는 방법이 바로 "런 렝스(Run Length) 부호화" 입니다.
찾아보시면 예제가 많이 있으니 쉽게 하실 수 있어요.
댓글 달기