chigley Posted May 20, 2007 Share Posted May 20, 2007 Hi guys, Been trying to make sense of the SHA-256 algorithm for days now, but the specification just doesn't make any sense. I've found a few classes when Googling about but ideally I just need a standalone function. I found this pseudocode on the Wikipedia article but I can't make much sense of it really! Note: All variables are unsigned 32 bits and wrap modulo 232 when calculating Initialize variables (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19): h0 := 0x6a09e667 h1 := 0xbb67ae85 h2 := 0x3c6ef372 h3 := 0xa54ff53a h4 := 0x510e527f h5 := 0x9b05688c h6 := 0x1f83d9ab h7 := 0x5be0cd19 Initialize table of round constants (first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311): k[0..63] := 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 Pre-processing: append the bit '1' to the message append k bits '0', where k is the minimum number >= 0 such that the resulting message length (in bits) is congruent to 448 (mod 512) append length of message (before pre-processing), in bits, as 64-bit big-endian integer Process the message in successive 512-bit chunks: break message into 512-bit chunks for each chunk break chunk into sixteen 32-bit big-endian words w[0..15] Extend the sixteen 32-bit words into sixty-four 32-bit words: for i from 16 to 63 s0 := (w[i-15] rightrotate 7) xor (w[i-15] rightrotate 18) xor (w[i-15] rightshift 3) s1 := (w[i-2] rightrotate 17) xor (w[i-2] rightrotate 19) xor (w[i-2] rightshift 10) w[i] := w[i-16] + s0 + w[i-7] + s1 Initialize hash value for this chunk: a := h0 b := h1 c := h2 d := h3 e := h4 f := h5 g := h6 h := h7 Main loop: for i from 0 to 63 s0 := (a rightrotate 2) xor (a rightrotate 13) xor (a rightrotate 22) maj := (a and b) xor (a and c) xor (b and c) t2 := s0 + maj s1 := (e rightrotate 6) xor (e rightrotate 11) xor (e rightrotate 25) ch := (e and f) xor ((not e) and g) t1 := h + s1 + ch + k[i] + w[i] h := g g := f f := e e := d + t1 d := c c := b b := a a := t1 + t2 Add this chunk's hash to result so far: h0 := h0 + a h1 := h1 + b h2 := h2 + c h3 := h3 + d h4 := h4 + e h5 := h5 + f h6 := h6 + g h7 := h7 + h Produce the final hash value (big-endian): digest = hash = h0 append h1 append h2 append h3 append h4 append h5 append h6 append h7 If any of you can help I'd really appreciate it Chigley Quote Link to comment https://forums.phpfreaks.com/topic/52196-anyone-got-a-sha-256-function-for-php4/ Share on other sites More sharing options...
neel_basu Posted May 20, 2007 Share Posted May 20, 2007 Look at the phpinfo(); I am sure that SHA-256 Algo is already Installed. You dont need to create by yourself. Quote Link to comment https://forums.phpfreaks.com/topic/52196-anyone-got-a-sha-256-function-for-php4/#findComment-257444 Share on other sites More sharing options...
chigley Posted May 20, 2007 Author Share Posted May 20, 2007 I need a custom function for use on many servers, some of which will not have the PHP default functions availiable. Quote Link to comment https://forums.phpfreaks.com/topic/52196-anyone-got-a-sha-256-function-for-php4/#findComment-257455 Share on other sites More sharing options...
neel_basu Posted May 20, 2007 Share Posted May 20, 2007 almost 99.99% servers allows all these algo(s). else get a free host and make a php script there that do's this Hashing job and output's the SHA-256 hashed string. and use that url in all of your applications. Quote Link to comment https://forums.phpfreaks.com/topic/52196-anyone-got-a-sha-256-function-for-php4/#findComment-257460 Share on other sites More sharing options...
chigley Posted May 20, 2007 Author Share Posted May 20, 2007 That's out of the question I need a function that will work on any server without calling any of my sites, some of them will have the default functions disabled so I really need a standalone. I just don't understand this bit of the Wiki: Pre-processing: append the bit '1' to the message append k bits '0', where k is the minimum number >= 0 such that the resulting message length (in bits) is congruent to 448 (mod 512) append length of message (before pre-processing), in bits, as 64-bit big-endian integer Nor do I understand most of it to be honest... Thanks Quote Link to comment https://forums.phpfreaks.com/topic/52196-anyone-got-a-sha-256-function-for-php4/#findComment-257464 Share on other sites More sharing options...
neel_basu Posted May 20, 2007 Share Posted May 20, 2007 See the source of PHP SHA-256 Algorithm. Quote Link to comment https://forums.phpfreaks.com/topic/52196-anyone-got-a-sha-256-function-for-php4/#findComment-257467 Share on other sites More sharing options...
chigley Posted May 20, 2007 Author Share Posted May 20, 2007 Where can I find this? The PHP source isn't very easy to navigate... I've tried looking for function sources before but don't know where to find them in the PHP source. Thanks a lot for your help Quote Link to comment https://forums.phpfreaks.com/topic/52196-anyone-got-a-sha-256-function-for-php4/#findComment-257469 Share on other sites More sharing options...
neel_basu Posted May 20, 2007 Share Posted May 20, 2007 If you cant use SHA algo through PHP YOu still can do it using MySQL Use this query bellow. select sha1('TheOriginalText'); Quote Link to comment https://forums.phpfreaks.com/topic/52196-anyone-got-a-sha-256-function-for-php4/#findComment-257701 Share on other sites More sharing options...
seb hughes Posted May 20, 2007 Share Posted May 20, 2007 You need a new host if they don't let you use sha1 in php, why can't you use MD5? Quote Link to comment https://forums.phpfreaks.com/topic/52196-anyone-got-a-sha-256-function-for-php4/#findComment-257704 Share on other sites More sharing options...
chigley Posted May 20, 2007 Author Share Posted May 20, 2007 It's not my host. My clients' hosts do not have the hash() type functions available, and I need to get a custom function done as soon as possible. MD5 is out of the question I'm afraid Quote Link to comment https://forums.phpfreaks.com/topic/52196-anyone-got-a-sha-256-function-for-php4/#findComment-257791 Share on other sites More sharing options...
neel_basu Posted May 20, 2007 Share Posted May 20, 2007 If you cant use SHA algo through PHP YOu still can do it using MySQL Use this query bellow. select sha1('TheOriginalText'); Did you looked at this Reply ?? Quote Link to comment https://forums.phpfreaks.com/topic/52196-anyone-got-a-sha-256-function-for-php4/#findComment-257794 Share on other sites More sharing options...
chigley Posted May 20, 2007 Author Share Posted May 20, 2007 I need SHA-256, which requires an addon for mySQL. Also, some of the uses are not for databases. Quote Link to comment https://forums.phpfreaks.com/topic/52196-anyone-got-a-sha-256-function-for-php4/#findComment-257796 Share on other sites More sharing options...
neel_basu Posted May 20, 2007 Share Posted May 20, 2007 I've never faced Such a problem. Quote Link to comment https://forums.phpfreaks.com/topic/52196-anyone-got-a-sha-256-function-for-php4/#findComment-257798 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.