2011-08-08 7 views
0

sha1() 함수를 사용하여 160 비트의 40 문자 키를 생성합니다. 하지만 sha-1 128 키를 생성하는 함수를 찾고 있습니까?sha-1 128 비트 키를 생성하는 PHP 함수는 무엇입니까?

+3

SHA-1은 160 비트 다이제스트를 생성합니다. SHA-1 128 비트 다이제스트와 같은 것은 존재하지 않습니다. (나는 당신이 "키"보다는 다이제스트라고 생각했다) 반면 MD5는 128 비트 다이제스트를 실제로 생성한다. – Peter

답변

2

128 비트 SHA-1 같은 것은 없습니다. SHA-1은 160 비트이다.

BTW, SHA-1은 약점이있다.

이 관심이있을 수 있습니다 here에서

<?php 
$data = "hello"; 

foreach (hash_algos() as $v) { 
     $r = hash($v, $data, false); 
     printf("%-12s %3d %s\n", $v, strlen($r), $r); 
} 
?> 

가 (사용자가 의견을 기여).

+1

해당 줄의 전체 컨텍스트는 무엇입니까? 아니면 그거야? – Peter

+0

아니요, OP가 삭제 된 이후에 댓글을 올렸습니다. – Peter

+0

아하이 봐요! np ........ –

1

다음 해시 알고리즘은 128 비트 다이제스트 렌더링해야

hash("md2", $text); 
hash("md4", $text); 
hash("md5", $text); 
hash("ripemd128", $text); 
hash("tiger128,3", $text); 
hash("tiger128,4", $text); 
hash("haval128,3", $text); 
hash("haval128,4", $text); 
hash("haval128,5", $text); 

들은 32 개 진수 문자마다 하나의 니블 (4 비트)를 렌더링 :

  = 1/2417851639229258349412352 yottabyte 
      = 1/2361183241434822606848 zettabyte 
      = 1/2305843009213693952 exabyte 
      = 1/2251799813685248 petabyte 
      = 1/2199023255552 terabyte 
      = 1/2147483648 gigabyte 
      = 1/2097152 megabyte 
      = 4/1048576 Megabit 
      = 1/2048 kilobyte 
      = 4/1024 Kilobit 
      = 1/2 byte 
    nibble = 1 nibble 
      = 4 bits 

32 X 4 = 128 비트

알고리즘 출력 예 :

<?php 
$data = "hello"; 

foreach (hash_algos() as $v) { 
     $r = hash($v, $data, false); 
     printf("%-12s %3d %s\n", $v, strlen($r), $r); 
} 
?> 

which produce (long hashes are cropped) 

md2   32 a9046c73e00331af68917d3804f70655     
md4   32 866437cb7a794bce2b727acc0362ee27 
md5   32 5d41402abc4b2a76b9719d911017c592 
sha1   40 aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d 
sha256  64 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e730 
sha384  96 59e1748777448c69de6b800d7a33bbfb9ff1b463e44354c3553 
sha512  128 9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2d 
ripemd128  32 789d569f08ed7055e94b4289a4195012 
ripemd160  40 108f07b8382412612c048d07d13f814118445acd 
ripemd256  64 cc1d2594aece0a064b7aed75a57283d9490fd5705ed3d66bf9a 
ripemd320  80 eb0cf45114c56a8421fbcb33430fa22e0cd607560a88bbe14ce 
whirlpool 128 0a25f55d7308eca6b9567a7ed3bd1b46327f0f1ffdc804dd8bb 
tiger128,3 32 a78862336f7ffd2c8a3874f89b1b74f2 
tiger160,3 40 a78862336f7ffd2c8a3874f89b1b74f2f27bdbca 
tiger192,3 48 a78862336f7ffd2c8a3874f89b1b74f2f27bdbca39660254 
tiger128,4 32 1c2a939f230ee5e828f5d0eae5947135 
tiger160,4 40 1c2a939f230ee5e828f5d0eae5947135741cd0ae 
tiger192,4 48 1c2a939f230ee5e828f5d0eae5947135741cd0aefeeb2adc 
snefru  64 7c5f22b1a92d9470efea37ec6ed00b2357a4ce3c41aa6e28e3b 
gost   64 a7eb5d08ddf2363f1ea0317a803fcef81d33863c8b2f9f6d7d1 
adler32  8 062c0215 
crc32   8 3d653119 
crc32b   8 3610a686 
haval128,3 32 85c3e4fac0ba4d85519978fdc3d1d9be 
haval160,3 40 0e53b29ad41cea507a343cdd8b62106864f6b3fe 
haval192,3 48 bfaf81218bbb8ee51b600f5088c4b8601558ff56e2de1c4f 
haval224,3 56 92d0e3354be5d525616f217660e0f860b5d472a9cb99d6766be 
haval256,3 64 26718e4fb05595cb8703a672a8ae91eea071cac5e7426173d4c 
haval128,4 32 fe10754e0b31d69d4ece9c7a46e044e5 
haval160,4 40 b9afd44b015f8afce44e4e02d8b908ed857afbd1 
haval192,4 48 ae73833a09e84691d0214f360ee5027396f12599e3618118 
haval224,4 56 e1ad67dc7a5901496b15dab92c2715de4b120af2baf661ecd92 
haval256,4 64 2d39577df3a6a63168826b2a10f07a65a676f5776a0772e0a87 
haval128,5 32 d20e920d5be9d9d34855accb501d1987 
haval160,5 40 dac5e2024bfea142e53d1422b90c9ee2c8187cc6 
haval192,5 48 bbb99b1e989ec3174019b20792fd92dd67175c2ff6ce5965 
haval224,5 56 aa6551d75e33a9c5cd4141e9a068b1fc7b6d847f85c3ab16295 
haval256,5 64 348298791817d5088a6de6c1b6364756d404a50bd64e645035f 
+2

아니요, 128- 니블 (512 비트)입니다. –

+1

해시를 나타내는 16 진수 문자열의 길이는 다이제스트의 비트 수가 아닌 128입니다. http://www.php.net/manual/en/function.hash.php#104987 – Peter

+0

감사합니다. 내가 16 진수 값을 계산 한 이후로 꽤 오래되었습니다. :) – AlienWebguy

관련 문제