C언어 이 방식은 복호화가 불가능할까요?

msms772의 이미지

안녕하세요. 프린이 새내기입니다.
6.8일, 팀프로젝트 발표해야하는데 아직도 막히고있는 부분이 있습니다 ㅠㅠ
먼저 암호화 방법은 이렇습니다.
(알파벳only)문장단위로 끊어서 읽고, 다른 글자가 나올때까지 한 반복되는 문자의 갯수를 적어주는 것입니다.
가령,

HELLO WORLD
AAABBCCCCC
란 텍스트 파일이 있다면 그걸 읽고

HEL20 WORLD (L이 두개==L2)
A3B2C5 (A가 3개, B가 2개, C가 5개 ==A3B2C5)

이렇게 새로운 텍스트 파일에 저장합니다.
이후 암호화된 문자열을 원래대로 돌려주는 복호화를 해야하는데 이런 방식이 가능할지도 가늠이 안됩니다 ㅠㅠ
시간이 얼마 안남았는데 이제 와서 암호화 방식을 바꿀지 말지도 고민이네요.
고수분들 도움! 부탁드립니다.

세벌의 이미지

**팀원이 짠 암호화 함수를 동봉?합니다.
라고 하셔서.
야! 그런걸 아무나 모는 게시판에 왜 공개하냐?
고 하실 팀원이 있을까 걱정됩니다. 질문이
복호화가 불가능할까요?
라면 답은
아뇨.
가 될 거 같네요.

무슨 답변이 이러냐고 불만을 제기하신다면
https://wiki.kldp.org/wiki.php/DocbookSgml/Beginner_QA-KLDP#AEN70
를 먼저 읽어보실 것을 추천합니다.

swish95의 이미지

질문의 수준을 논하기 이전에 답변의 수준도 좀 ..

답하기 싫으면 안하면 될일입니다.

------------------------------------------------------------
ProgrammingHolic

세벌의 이미지

제목은 질문내용을 요약하라.
라는 항목이
https://wiki.kldp.org/wiki.php/DocbookSgml/Beginner_QA-KLDP#AEN70
에 있지요.
오해 없기를.

익명 사용자의 이미지

수준이라는 건 늘 주관적인 것이지요.

저도 나름의 판단 기준이 있기는 합니다만 별로 남에게 강요하고 싶은 생각은 안 듭니다.

======

그보다는 명백히 틀린 답변을 걸어놔서 잘못된 정보를 확산시키는 답변들이 더 심각한 문제 아닐까요.

예를 들어... https://kldp.org/node/161983

msms772의 이미지

새벽에 고민해봤었지만 저부분이 아예 없으면 이해가 안될것같아 썻습니다.
다시 생각해보니 그럴수 있을것같아 코드 부분은 삭제할 생각입니다.

라스코니의 이미지

HELLO -> HEL2O는 암호화되었다고 보기에 어려워 보입니다. 더군다나 WORLD -> WORLD는 전혀 인코딩되지 않는 단점이 있네요.

HELLO -> ~*d#x 같은 식으로 원래 문장을 전혀 유추할 수 없어야 합니다.

보통 암호화는 암호화 key (0x1234 등)를 두고 입력값과 암호키의 bit shift, and/or, xor 등의 동작을 통해 이루어지고 복호화는 그 역순으로 bit operation을 했을 때 원래 값이 얻어집니다.

질문하신 내용으로 봐서 RSA 같은 것을 하는 것은 목표가 아닌 듯 보이네요. 암호화 입문(?) 같은 인터넷 블로그를 읽어 보세요.

msms772의 이미지

완전 못 알아볼정도로 암호화하는게 중점이 아니라
패킷손상이 있어도 원래대로 복원하는 신뢰성에 다들 인원이 몰려있거든요..
암호화 입문? 알아봐야 겠습니다. 감사합니다!

익명 사용자의 이미지

암호화가 아니라 (아주 기초적인 수준의) 압축이군요.

입력이 알파벳 문자열로만 들어온다면 잘 동작할 것으로 보입니다.
그렇지 않다면 어떻게 되는지는 연습 문제로 남기지요.

chanik의 이미지

올리신 코드 실행하면 아래와 같이 의도와 다르게 나옵니다.
팀원도 테스트 안하고 보내시고 글쓴이도 테스트 안해보셨군요.

EL2On WORLD
A3B2C5

과제에서 요구하는 암호화요건이 어느정도인지 모르겠으나
암호화 방식을 바꿀 시간이 된다면 조금 더 공들여 만드시면 좋겠고,

그럴 겨를이 없는 상황이라면 팀원에게 버그 수정하게 하시고
글쓴이는 복호화 함수 만드시면 되겠습니다.
암호화 코드 참고해서 하면 되겠네요.

msms772의 이미지

코드를 잘라서 올린게 문제가 아닌가 싶은데,
풀 코드에선 의도한대로 작동이 됩니다.
이걸 원래 맡았던 팀원도 신뢰성 파트 도와주러 가서 제가 토스받은건데
전 암호화부터 이해가 안되네요 ㅠ
조언 감사합니다.

chanik의 이미지

잠시 살펴보니, 이전에 올리신 코드의 file_read() 함수에서 while 루프 시작하기 전에 쓸데없이 fgetc(fp)를 실행하면서 첫 번째 바이트를 그냥 버리는 버그가 있습니다. 그리고 description_encode() 함수에도 중간에 불필요한 fprintf(fp, "n") 한 줄이 들어가서 결과를 왜곡하고 있고요.

원본코드는 잘 동작했는지 몰라도, 잘라 올리셨던 코드에는 뒤의 두 가지 버그가 있었습니다.

kurishin의 이미지

지금 하시는 방법이 바로 "런 렝스(Run Length) 부호화" 입니다.

찾아보시면 예제가 많이 있으니 쉽게 하실 수 있어요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.