본문 바로가기

쓰기


작업중인 코드이며 완벽하게 작동 되지 않는 코드입니다.

 

 '정수값을 이진 문자열로 변환
Function DecToBin(byteDec As Double)
    Dim sBin As String '이진 문자열
    Dim nTemp As Double '임시 값 저장소
   
    '변수에 값 입력
    nTemp = byteDec
   
    '2진 문자열 생성
    Do While nTemp >= 1
        '인수 분해 시작
        sBin = CStr(nTemp Mod 2) & sBin
        nTemp = Int(nTemp / 2)
    Loop
   
    '리턴 값 출력
    DecToBin = sBin
End Function

'이진 문자열을 정수값으로 변환
Function BinToDec(sDec As String)
    Dim nTemp As Double '임시 값 저장소
    Dim nCount As Integer '카운터
   
    '카운터 초기화
    nCount = 0
   
    '2진 문자열 생성
    Do While nCount < Len(sDec)
        '정수값 산출 시작
        nTemp = nTemp + (CDbl(Mid(sDec, Len(sDec) - nCount, 1)) * (2 ^ nCount))
   
        '카운터 증가
        nCount = nCount + 1
    Loop
   
    '리턴 값 출력
    BinToDec = nTemp

End Function

'Or 연산 수행
Function calcOr(nInput1 As Double, nInput2 As Double)
    Dim sData1 As String '입력 데이터1
    Dim sData2 As String '입력 데이터2
    Dim nCount As Integer '카운터
    Dim sTemp As String '임시 스티링
   
    '2진 스트링으로 변환
    sData1 = DecToBin(nInput1)
    sData2 = DecToBin(nInput2)
   
    '32비트로 변환
    sData1 = String(32 - Len(sData1), "0") & sData1
    sData2 = String(32 - Len(sData2), "0") & sData2
   
    '32비트 Or 연산 수행(한자리씩 비교)
    For nCount = 1 To 32
       
        If Mid(sData1, nCount, 1) = 1 Or Mid(sData2, nCount, 1) = 1 Then
            sTemp = sTemp + "1"
        Else
            sTemp = sTemp + "0"
        End If
    Next
   
    '리턴 값 출력
    calcOr = BinToDec(sTemp)
End Function

'32비트 좌측 시프트 연산 수행
Function ShiftLeft(nInput As Double, nShift As Integer)
    Dim sData As String '작업용 데이터
    Dim sValue As String '임시 출력 값
   
    '이진 변환
    sData = DecToBin(nInput)
   
    '32비트 변환
    sData = String(32 - Len(sData), "0") & sData
   
    '시프트 연산 수행
    sValue = Mid(sData, nShift + 1, Len(sData))
   
    '32비트 변환
    sValue = sValue & String(32 - Len(sValue), "0")
   
    '리턴 값 출력
    ShiftLeft = BinToDec(sValue)

End Function

'32비트 우측 시프트 연산 수행
Function ShiftRight(nInput As Double, nShift As Integer)
    Dim sData As String '작업용 데이터
    Dim sValue As String '임시 출력 값
   
    '이진 변환
    sData = DecToBin(nInput)
   
    '32비트 변환
    sData = String(32 - Len(sData), "0") & sData
   
    '시프트 연산 수행
    sValue = Mid(sData, 1, Len(sData) - nShift)
   
    '32비트 변환
    sValue = String(32 - Len(sValue), "0") & sValue
   
    '리턴 값 출력
    ShiftRight = BinToDec(sValue)
   
End Function

'해쉬 만들기
Function makeHash(arrInput() As Byte)
    Dim nCount As Integer '카운터
    Dim nTemp As Double '임시 데이터
   
    'arrInput 배열은 바이트 배열이며 하나의 배열안에 8비트의 데이터가 들어 있음
   
    '변수 초기화
    nCount = 0
    nTemp = 0
   
    '해쉬 만들기
    Do While nCount <= UBound(arrInput)
       
        'nTemp = calcOr(((nTemp * 128) Mod (2 ^ 32)), (nTemp / 128)) + arrInput(nCount) '작동 안됨(Mod (2 ^ 32) 연산 수행시 오류)
       
        '실제 해쉬 만들기 작업
        nTemp = calcOr(ShiftLeft(nTemp, 7), ShiftRight(nTemp, 7)) + arrInput(nCount)
       
        '배열 카운터 증가
        nCount = nCount + 1
    Loop
   
    '리턴 값 출력
    makeHash = nTemp

End Function

 
Sub testHash()
    Dim toolCharset As New ChilkatCharset2 '문자 인코딩 변환 툴 로드
    Dim sTemp As String
    Dim arrByte() As Byte
   
    '테스트 문자
    sString = "000"
   
    toolCharset.FromCharset = "unicode" '입력언어에서
    toolCharset.ToCharset = "shift_jis" 'Shift-JIS 로
   
    'Shift-JIS로 인코딩 변환 수행
    sTemp = toolCharset.ConvertData(sString)
   
    '배열 초기화
    ReDim arrByte(LenB(sTemp))
   
    '8비트씩 배열에 할당
    arrByte() = sTemp
   
    '해쉬 실행
    testHash = CStr(makeHash(arrByte()))
   
End Sub


조회 수 :
9021
등록일 :
2009.01.05
11:12:27
엮인글 :
https://arallab.hided.net/4197/ad5/trackback
게시글 주소 :
https://arallab.hided.net/board_devtalk/4197
List of Articles
번호 제목 글쓴이 날짜 조회 수sort
공지 Talk [필독] 테스트필터 사용시 주의사항 라파에 2008-08-03 155436
169 Talk 필터 3개 커밋 완료했습니다. [2] Hide_D 2008-08-11 9263
168 Talk RLCmd, KoFilter 의 디버그 로그 기능에 대해.. whoami 2008-07-26 9246
167 Talk ATCode 버전업에 대해 - 관리자님 봐주세요.. [1] whoami 2008-07-26 9241
166 Archive [플러그인, 소스] ATCode 테스트 버전 20080911 [3] file whoami 2008-09-11 9210
165 Archive [플러그인] OutRuby 테스트 버전 20081012 file Hide_D 2008-10-12 9206
164 Talk Windows 7, UAC, 64bit Hide_D 2011-04-24 9107
163 Talk whoami님 [3] Hide_D 2008-07-18 9072
162 Archive [플러그인, 소스] FixControlCharactor 20080817_2(테스트버전) file Hide_D 2008-08-17 9034
» Talk 비주얼베이직에서의 Hash값 생성 코드 작업 file HaruKaze 2009-01-05 9021
160 Archive [플러그인,소스] EzTransXP with 사용자사전플러그인(테스트 버전) 20080721_2(추가수정) file Hide_D 2008-07-21 9014
159 Archive [플러그인, 소스] ATCode 테스트 버전 20080724_2 [1] file whoami 2008-07-24 8960
158 Talk http svn을 운용하는건 어떨까요? [3] 아랄 2008-07-20 8950
157 Archive [플러그인, 소스] FixControlCharactor 20080817_3(테스트버전) file Hide_D 2008-08-17 8928
156 Archive [플러그인, 소스] RLCmd 20080728 file whoami 2008-07-28 8913
155 Archive [플러그인, 소스] ATCode 테스트 버전 20080722 [2] file whoami 2008-07-22 8908
154 Talk 전에 쓸모 있는 기능의 2번 관련 Hide_D 2008-07-31 8860
153 OtherFiles 히데님께! 디카포2의 헥스코드 모음 입니다. [2] file 라파에 2008-08-17 8846
152 Archive [플러그인, 소스] FixControlCharactor 20080816_2(테스트버전) file Hide_D 2008-08-16 8836
151 Talk SOW 방식 지원 ATCode 플러그인 소스 커밋하였습니다.. [2] whoami 2008-07-27 8829
150 Archive [플러그인, 소스] RLCmd 20080802 [1] file whoami 2008-08-02 8818