PHP상의 Hash알고리즘와 블럭암호화 알고리즘 테스트
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소스