PHP상의 Hash알고리즘와 블럭암호화 알고리즘 테스트

1

HASH 알고리즘


## 결과
mcrypt 라이브러리에 따라서 지원 알고리즘이 다를 수 있음.

adler32 : 8byte
crc32 : 8byte
crc32b : 8byte
gost : 64byte
haval128,3 : 32byte
haval128,4 : 32byte
haval128,5 : 32byte
haval160,3 : 40byte
haval160,4 : 40byte
haval160,5 : 40byte
haval192,3 : 48byte
haval192,4 : 48byte
haval192,5 : 48byte
haval224,3 : 56byte
haval224,4 : 56byte
haval224,5 : 56byte
haval256,3 : 64byte
haval256,4 : 64byte
haval256,5 : 64byte
md2 : 32byte
md4 : 32byte
md5 : 32byte
ripemd128 : 32byte
ripemd160 : 40byte
ripemd256 : 64byte
ripemd320 : 80byte
sha1 : 40byte
sha256 : 64byte
sha384 : 96byte
sha512 : 128byte
snefru : 64byte
tiger128,3 : 32byte
tiger128,4 : 32byte
tiger160,3 : 40byte
tiger160,4 : 40byte
tiger192,3 : 48byte
tiger192,4 : 48byte
whirlpool : 128byte

블럭암호화(양반향) 알고리즘

#참고
0으로 나온건 동작시 에러나서 테스트가 안된것.(arcfour,enigma)
rijndael-128 = AES-128, key 는 16byte (128bit)함수가 잘못된듯
rijndael-192 = AES-192, key 는 24byte (192bit)함수가 잘못된듯
rijndael-256 = AES-256, key 는 32byte (256bit)함수가 잘못된듯
실험 Data의 길이는 block 의 0.5~3배로 0.5씩 증가시켜서 테스트
cbc 모드로만 테스트
mcrypt 라이브러리에 따라서 지원 알고리즘이 다를 수 있음.
key의 길이는 모듈에서 지원하는 최대 길이를 나타내는것 같음. 실제 사용시는 규격을 찾아서 사용하길 바람.

## 결과

# arcfour
key : 0bit (Byte), iv : 0bit (Byte), Block : 0bit (Byte)
Data : 0byte => enced : 0byte
Data : 0byte => enced : 0byte
Data : 0byte => enced : 0byte
Data : 0byte => enced : 0byte
Data : 0byte => enced : 0byte
Data : 0byte => enced : 0byte
-------------
# blowfish
key : 448bit (56Byte), iv : 64bit (8Byte), Block : 64bit (8Byte)
Data : 4byte => enced : 8byte
Data : 8byte => enced : 8byte
Data : 12byte => enced : 16byte
Data : 16byte => enced : 16byte
Data : 20byte => enced : 24byte
Data : 24byte => enced : 24byte
-------------
# blowfish-compat
key : 448bit (56Byte), iv : 64bit (8Byte), Block : 64bit (8Byte)
Data : 4byte => enced : 8byte
Data : 8byte => enced : 8byte
Data : 12byte => enced : 16byte
Data : 16byte => enced : 16byte
Data : 20byte => enced : 24byte
Data : 24byte => enced : 24byte
-------------
# cast-128
key : 128bit (16Byte), iv : 64bit (8Byte), Block : 64bit (8Byte)
Data : 4byte => enced : 8byte
Data : 8byte => enced : 8byte
Data : 12byte => enced : 16byte
Data : 16byte => enced : 16byte
Data : 20byte => enced : 24byte
Data : 24byte => enced : 24byte
-------------
# cast-256
key : 256bit (32Byte), iv : 128bit (16Byte), Block : 128bit (16Byte)
Data : 8byte => enced : 16byte
Data : 16byte => enced : 16byte
Data : 24byte => enced : 32byte
Data : 32byte => enced : 32byte
Data : 40byte => enced : 48byte
Data : 48byte => enced : 48byte
-------------
# des
key : 64bit (8Byte), iv : 64bit (8Byte), Block : 64bit (8Byte)
Data : 4byte => enced : 8byte
Data : 8byte => enced : 8byte
Data : 12byte => enced : 16byte
Data : 16byte => enced : 16byte
Data : 20byte => enced : 24byte
Data : 24byte => enced : 24byte
-------------
# enigma
key : 0bit (Byte), iv : 0bit (Byte), Block : 0bit (Byte)
Data : 0byte => enced : 0byte
Data : 0byte => enced : 0byte
Data : 0byte => enced : 0byte
Data : 0byte => enced : 0byte
Data : 0byte => enced : 0byte
Data : 0byte => enced : 0byte
-------------
# gost
key : 256bit (32Byte), iv : 64bit (8Byte), Block : 64bit (8Byte)
Data : 4byte => enced : 8byte
Data : 8byte => enced : 8byte
Data : 12byte => enced : 16byte
Data : 16byte => enced : 16byte
Data : 20byte => enced : 24byte
Data : 24byte => enced : 24byte
-------------
# loki97
key : 256bit (32Byte), iv : 128bit (16Byte), Block : 128bit (16Byte)
Data : 8byte => enced : 16byte
Data : 16byte => enced : 16byte
Data : 24byte => enced : 32byte
Data : 32byte => enced : 32byte
Data : 40byte => enced : 48byte
Data : 48byte => enced : 48byte
-------------
# rc2
key : 1024bit (128Byte), iv : 64bit (8Byte), Block : 64bit (8Byte)
Data : 4byte => enced : 8byte
Data : 8byte => enced : 8byte
Data : 12byte => enced : 16byte
Data : 16byte => enced : 16byte
Data : 20byte => enced : 24byte
Data : 24byte => enced : 24byte
-------------
# rijndael-128
key : 256bit (32Byte), iv : 128bit (16Byte), Block : 128bit (16Byte)
Data : 8byte => enced : 16byte
Data : 16byte => enced : 16byte
Data : 24byte => enced : 32byte
Data : 32byte => enced : 32byte
Data : 40byte => enced : 48byte
Data : 48byte => enced : 48byte
-------------
# rijndael-192
key : 256bit (32Byte), iv : 192bit (24Byte), Block : 192bit (24Byte)
Data : 12byte => enced : 24byte
Data : 24byte => enced : 24byte
Data : 36byte => enced : 48byte
Data : 48byte => enced : 48byte
Data : 60byte => enced : 72byte
Data : 72byte => enced : 72byte
-------------
# rijndael-256
key : 256bit (32Byte), iv : 256bit (32Byte), Block : 256bit (32Byte)
Data : 16byte => enced : 32byte
Data : 32byte => enced : 32byte
Data : 48byte => enced : 64byte
Data : 64byte => enced : 64byte
Data : 80byte => enced : 96byte
Data : 96byte => enced : 96byte
-------------
# safer-sk128
key : 128bit (16Byte), iv : 64bit (8Byte), Block : 64bit (8Byte)
Data : 4byte => enced : 8byte
Data : 8byte => enced : 8byte
Data : 12byte => enced : 16byte
Data : 16byte => enced : 16byte
Data : 20byte => enced : 24byte
Data : 24byte => enced : 24byte
-------------
# safer-sk64
key : 64bit (8Byte), iv : 64bit (8Byte), Block : 64bit (8Byte)
Data : 4byte => enced : 8byte
Data : 8byte => enced : 8byte
Data : 12byte => enced : 16byte
Data : 16byte => enced : 16byte
Data : 20byte => enced : 24byte
Data : 24byte => enced : 24byte
-------------
# saferplus
key : 256bit (32Byte), iv : 128bit (16Byte), Block : 128bit (16Byte)
Data : 8byte => enced : 16byte
Data : 16byte => enced : 16byte
Data : 24byte => enced : 32byte
Data : 32byte => enced : 32byte
Data : 40byte => enced : 48byte
Data : 48byte => enced : 48byte
-------------
# serpent
key : 256bit (32Byte), iv : 128bit (16Byte), Block : 128bit (16Byte)
Data : 8byte => enced : 16byte
Data : 16byte => enced : 16byte
Data : 24byte => enced : 32byte
Data : 32byte => enced : 32byte
Data : 40byte => enced : 48byte
Data : 48byte => enced : 48byte
-------------
# threeway
key : 96bit (12Byte), iv : 96bit (12Byte), Block : 96bit (12Byte)
Data : 6byte => enced : 12byte
Data : 12byte => enced : 12byte
Data : 18byte => enced : 24byte
Data : 24byte => enced : 24byte
Data : 30byte => enced : 36byte
Data : 36byte => enced : 36byte
-------------
# tripledes
key : 192bit (24Byte), iv : 64bit (8Byte), Block : 64bit (8Byte)
Data : 4byte => enced : 8byte
Data : 8byte => enced : 8byte
Data : 12byte => enced : 16byte
Data : 16byte => enced : 16byte
Data : 20byte => enced : 24byte
Data : 24byte => enced : 24byte
-------------
# twofish
key : 256bit (32Byte), iv : 128bit (16Byte), Block : 128bit (16Byte)
Data : 8byte => enced : 16byte
Data : 16byte => enced : 16byte
Data : 24byte => enced : 32byte
Data : 32byte => enced : 32byte
Data : 40byte => enced : 48byte
Data : 48byte => enced : 48byte
-------------
# wake
key : 0bit (Byte), iv : 0bit (Byte), Block : 0bit (Byte)
Data : 0byte => enced : 0byte
Data : 0byte => enced : 0byte
Data : 0byte => enced : 0byte
Data : 0byte => enced : 0byte
Data : 0byte => enced : 0byte
Data : 0byte => enced : 0byte
-------------
# xtea
key : 128bit (16Byte), iv : 64bit (8Byte), Block : 64bit (8Byte)
Data : 4byte => enced : 8byte
Data : 8byte => enced : 8byte
Data : 12byte => enced : 16byte
Data : 16byte => enced : 16byte
Data : 20byte => enced : 24byte
Data : 24byte => enced : 24byte
-------------


첨부파일은 테스트한 php소스
댓글
  • No Nickname
    No Comment
  • 권한이 없습니다.
    {{m_row.m_nick}}
    -
목록형 📅 달력형