블로그 이미지
안녕1999

카테고리

전체 (3067)
자바스크립트 (20)
안드로이드 (14)
WebGL (4)
변비 (17)
정치,경제 (35)
C언어,ARM (162)
컴퓨터(PC, Note Book, 윈.. (41)
전자회로, PCB (27)
유머,안웃긴,GIF,동영상 (118)
국부론60 (71)
모듈(PCB) (3)
건강 (2)
FreeCAD (25)
PADS (43)
퇴직,퇴사,구직,취업 활동 (3)
C# (86)
엑셀 (8)
워드 (0)
LabView (6)
레고 (30)
FPGA (0)
Total
Today
Yesterday

달력

« » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

공지사항

최근에 올라온 글

'32'에 해당되는 글 1건

  1. 2016.08.09 가중치 체크섬

체크섬의 문제점은 데이터가 순서가 바뀌는 경우에도 결과는 동일하다는 것이 문제이다.

이는 전체 중복가능한 경우의 수에서 매우 적은 경우이나, 실제 사용할때는 큰 문제가 된다.


이를 보안한 방식이 가중치 체크섬이다.(내가 이름붙였다.)

데이터를 순서대로 가중치를 부여하여, 곱한다음 더한다.

예)

데이터 : 4,5,2,4

가중치 : 1,2,3,4

4*1+5*2+2*3+4*4=36


데이터 : 4,5,4,2

가중치 : 1,2,3,4

4*1+5*2+4*3+2*4=34

마지막 2개의 데이터 순서가 바뀐 경우에 결과값도 달라진다.

체크섬 방식보다는 훨씬 안전하다.


그러나, 체크섬방식 보다는 훨씬 적은 수의 데이터만 정확성을 보장한다.

범위를 초과하는 결과값에 대해서는 중복가능성이 매우 크다.

계산 속도 면에서도 곱셈연산이 한번 더 들어가므로, 2배정도 느리다.

CRC32에 비하면, 가중치 체크섬 방식도 매우 빠르다.

CRC32계산 속도는 너무 느리다.


가중치 체크섬방식의 문제점 한가지는, 특정한 위치의 값이 바뀌는 경우는 판별이 불가능하다는 것이다.

이문제를 해결하기 위해서, 가중치 체크섬 방식으로 "앞에서 뒤로" 와 "뒤에서 앞" 2가지 결과를 사용하는 방법이 있다.

물론, 속도는 2배 느려진다. 그래도 CRC32보다는 빠르다.


32비트 가중치 체크섬 방식은 실제 데이터를 사용할 경우에 CRC16수준의 결과를 얻었던것으로 기억한다.


데이터를 작게 요약하는것은 그 크기만큼의 중복가능성이 존재한다. 완전한 해결방법은 1:1로 비교하는것 뿐이다.


하드웨어 crc방식이 주로 사용되는 이유는, 성능이 더 우수하기도 하지만, 하드웨어로 구현이 쉽기 때문이다.

그러나, crc연산유닛이 없는 곳에서는 차라리 곱셈-덧셈 방식이 더 효율적일 수 있다.

연산 함수나 유닛이 없는 자바같은 언어인 경우, 모든 연산 하나 하나마다, 엄청난 연산이 필요하다.

이런 경우에는 crc방식은 매우 안좋은 선택이다.

Posted by 안녕1999
, |

최근에 달린 댓글

글 보관함