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

7 minute read

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소스


🔗original-link

Updated: