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}}
    -
목록형 📷 갤러리형
제목
[기본형] HTML (with 부트스트랩5.3 , jquery 3.7, vue.js)
유용한 리눅스(LINUX) 명령어
[공지] 기술 게시판
3.31
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.10
4.11
4.12
4.13
4.14
4.15
4.16
4.18
4.19
4.20
4.21
4.22
4.23
4.24
4.25
4.26
4.27
4.28
4.29
4.30
5.1
5.2
5.3
5.4