Best Python code snippet using selene_python
pypy_sha256.py
Source: pypy_sha256.py
1#!/โusr/โbin/โenv python2#3# SHA256 compression function implementation below is a verbatim copy of PyPy's implementation from4# https:/โ/โbitbucket.org/โpypy/โpypy/โraw/โf1f064b3faf1e012f7a9a9ab08f18074637ebe8a/โlib_pypy/โ_sha256.py .5#6# It is licensed under the MIT license and copyright PyPy Copyright holders 2003-20157# See https:/โ/โbitbucket.org/โpypy/โpypy/โsrc/โtip/โLICENSE for the full copyright notice.8#9SHA_BLOCKSIZE = 6410SHA_DIGESTSIZE = 3211def new_shaobject():12 return {13 'digest': [0]*8,14 'count_lo': 0,15 'count_hi': 0,16 'data': [0]* SHA_BLOCKSIZE,17 'local': 0,18 'digestsize': 019 }20ROR = lambda x, y: (((x & 0xffffffff) >> (y & 31)) | (x << (32 - (y & 31)))) & 0xffffffff21Ch = lambda x, y, z: (z ^ (x & (y ^ z)))22Maj = lambda x, y, z: (((x | y) & z) | (x & y))23S = lambda x, n: ROR(x, n)24R = lambda x, n: (x & 0xffffffff) >> n25Sigma0 = lambda x: (S(x, 2) ^ S(x, 13) ^ S(x, 22))26Sigma1 = lambda x: (S(x, 6) ^ S(x, 11) ^ S(x, 25))27Gamma0 = lambda x: (S(x, 7) ^ S(x, 18) ^ R(x, 3))28Gamma1 = lambda x: (S(x, 17) ^ S(x, 19) ^ R(x, 10))29def sha_transform(sha_info):30 W = []31 d = sha_info['data']32 for i in range(0,16):33 W.append( (d[4*i]<<24) + (d[4*i+1]<<16) + (d[4*i+2]<<8) + d[4*i+3])34 for i in range(16,64):35 W.append( (Gamma1(W[i - 2]) + W[i - 7] + Gamma0(W[i - 15]) + W[i - 16]) & 0xffffffff )36 ss = sha_info['digest'][:]37 def RND(a,b,c,d,e,f,g,h,i,ki):38 t0 = h + Sigma1(e) + Ch(e, f, g) + ki + W[i];39 t1 = Sigma0(a) + Maj(a, b, c);40 d += t0;41 h = t0 + t1;42 return d & 0xffffffff, h & 0xffffffff43 ss[3], ss[7] = RND(ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],0,0x428a2f98);44 ss[2], ss[6] = RND(ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],1,0x71374491);45 ss[1], ss[5] = RND(ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],2,0xb5c0fbcf);46 ss[0], ss[4] = RND(ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],3,0xe9b5dba5);47 ss[7], ss[3] = RND(ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],4,0x3956c25b);48 ss[6], ss[2] = RND(ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],5,0x59f111f1);49 ss[5], ss[1] = RND(ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],6,0x923f82a4);50 ss[4], ss[0] = RND(ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],7,0xab1c5ed5);51 ss[3], ss[7] = RND(ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],8,0xd807aa98);52 ss[2], ss[6] = RND(ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],9,0x12835b01);53 ss[1], ss[5] = RND(ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],10,0x243185be);54 ss[0], ss[4] = RND(ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],11,0x550c7dc3);55 ss[7], ss[3] = RND(ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],12,0x72be5d74);56 ss[6], ss[2] = RND(ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],13,0x80deb1fe);57 ss[5], ss[1] = RND(ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],14,0x9bdc06a7);58 ss[4], ss[0] = RND(ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],15,0xc19bf174);59 ss[3], ss[7] = RND(ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],16,0xe49b69c1);60 ss[2], ss[6] = RND(ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],17,0xefbe4786);61 ss[1], ss[5] = RND(ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],18,0x0fc19dc6);62 ss[0], ss[4] = RND(ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],19,0x240ca1cc);63 ss[7], ss[3] = RND(ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],20,0x2de92c6f);64 ss[6], ss[2] = RND(ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],21,0x4a7484aa);65 ss[5], ss[1] = RND(ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],22,0x5cb0a9dc);66 ss[4], ss[0] = RND(ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],23,0x76f988da);67 ss[3], ss[7] = RND(ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],24,0x983e5152);68 ss[2], ss[6] = RND(ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],25,0xa831c66d);69 ss[1], ss[5] = RND(ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],26,0xb00327c8);70 ss[0], ss[4] = RND(ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],27,0xbf597fc7);71 ss[7], ss[3] = RND(ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],28,0xc6e00bf3);72 ss[6], ss[2] = RND(ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],29,0xd5a79147);73 ss[5], ss[1] = RND(ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],30,0x06ca6351);74 ss[4], ss[0] = RND(ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],31,0x14292967);75 ss[3], ss[7] = RND(ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],32,0x27b70a85);76 ss[2], ss[6] = RND(ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],33,0x2e1b2138);77 ss[1], ss[5] = RND(ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],34,0x4d2c6dfc);78 ss[0], ss[4] = RND(ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],35,0x53380d13);79 ss[7], ss[3] = RND(ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],36,0x650a7354);80 ss[6], ss[2] = RND(ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],37,0x766a0abb);81 ss[5], ss[1] = RND(ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],38,0x81c2c92e);82 ss[4], ss[0] = RND(ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],39,0x92722c85);83 ss[3], ss[7] = RND(ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],40,0xa2bfe8a1);84 ss[2], ss[6] = RND(ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],41,0xa81a664b);85 ss[1], ss[5] = RND(ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],42,0xc24b8b70);86 ss[0], ss[4] = RND(ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],43,0xc76c51a3);87 ss[7], ss[3] = RND(ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],44,0xd192e819);88 ss[6], ss[2] = RND(ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],45,0xd6990624);89 ss[5], ss[1] = RND(ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],46,0xf40e3585);90 ss[4], ss[0] = RND(ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],47,0x106aa070);91 ss[3], ss[7] = RND(ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],48,0x19a4c116);92 ss[2], ss[6] = RND(ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],49,0x1e376c08);93 ss[1], ss[5] = RND(ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],50,0x2748774c);94 ss[0], ss[4] = RND(ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],51,0x34b0bcb5);95 ss[7], ss[3] = RND(ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],52,0x391c0cb3);96 ss[6], ss[2] = RND(ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],53,0x4ed8aa4a);97 ss[5], ss[1] = RND(ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],54,0x5b9cca4f);98 ss[4], ss[0] = RND(ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],55,0x682e6ff3);99 ss[3], ss[7] = RND(ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],56,0x748f82ee);100 ss[2], ss[6] = RND(ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],57,0x78a5636f);101 ss[1], ss[5] = RND(ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],ss[5],58,0x84c87814);102 ss[0], ss[4] = RND(ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],ss[4],59,0x8cc70208);103 ss[7], ss[3] = RND(ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],ss[3],60,0x90befffa);104 ss[6], ss[2] = RND(ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],ss[2],61,0xa4506ceb);105 ss[5], ss[1] = RND(ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],ss[1],62,0xbef9a3f7);106 ss[4], ss[0] = RND(ss[1],ss[2],ss[3],ss[4],ss[5],ss[6],ss[7],ss[0],63,0xc67178f2);107 dig = []108 for i, x in enumerate(sha_info['digest']):109 dig.append( (x + ss[i]) & 0xffffffff )110 sha_info['digest'] = dig111def sha_init():112 sha_info = new_shaobject()113 sha_info['digest'] = [0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A, 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19]114 sha_info['count_lo'] = 0115 sha_info['count_hi'] = 0116 sha_info['local'] = 0117 sha_info['digestsize'] = 32118 return sha_info119def sha224_init():120 sha_info = new_shaobject()121 sha_info['digest'] = [0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4]122 sha_info['count_lo'] = 0123 sha_info['count_hi'] = 0124 sha_info['local'] = 0125 sha_info['digestsize'] = 28126 return sha_info127def sha_update(sha_info, buffer):128 if isinstance(buffer, str):129 raise TypeError("Unicode strings must be encoded before hashing")130 count = len(buffer)131 buffer_idx = 0132 clo = (sha_info['count_lo'] + (count << 3)) & 0xffffffff133 if clo < sha_info['count_lo']:134 sha_info['count_hi'] += 1135 sha_info['count_lo'] = clo136 sha_info['count_hi'] += (count >> 29)137 if sha_info['local']:138 i = SHA_BLOCKSIZE - sha_info['local']139 if i > count:140 i = count141 # copy buffer142 sha_info['data'][sha_info['local']:sha_info['local']+i] = buffer[buffer_idx:buffer_idx+i]143 count -= i144 buffer_idx += i145 sha_info['local'] += i146 if sha_info['local'] == SHA_BLOCKSIZE:147 sha_transform(sha_info)148 sha_info['local'] = 0149 else:150 return151 while count >= SHA_BLOCKSIZE:152 # copy buffer153 sha_info['data'] = list(buffer[buffer_idx:buffer_idx + SHA_BLOCKSIZE])154 count -= SHA_BLOCKSIZE155 buffer_idx += SHA_BLOCKSIZE156 sha_transform(sha_info)157 # copy buffer158 pos = sha_info['local']159 sha_info['data'][pos:pos+count] = buffer[buffer_idx:buffer_idx + count]160 sha_info['local'] = count161def sha_final(sha_info):162 lo_bit_count = sha_info['count_lo']163 hi_bit_count = sha_info['count_hi']164 count = (lo_bit_count >> 3) & 0x3f165 sha_info['data'][count] = 0x80;166 count += 1167 if count > SHA_BLOCKSIZE - 8:168 # zero the bytes in data after the count169 sha_info['data'] = sha_info['data'][:count] + ([0] * (SHA_BLOCKSIZE - count))170 sha_transform(sha_info)171 # zero bytes in data172 sha_info['data'] = [0] * SHA_BLOCKSIZE173 else:174 sha_info['data'] = sha_info['data'][:count] + ([0] * (SHA_BLOCKSIZE - count))175 sha_info['data'][56] = (hi_bit_count >> 24) & 0xff176 sha_info['data'][57] = (hi_bit_count >> 16) & 0xff177 sha_info['data'][58] = (hi_bit_count >> 8) & 0xff178 sha_info['data'][59] = (hi_bit_count >> 0) & 0xff179 sha_info['data'][60] = (lo_bit_count >> 24) & 0xff180 sha_info['data'][61] = (lo_bit_count >> 16) & 0xff181 sha_info['data'][62] = (lo_bit_count >> 8) & 0xff182 sha_info['data'][63] = (lo_bit_count >> 0) & 0xff183 sha_transform(sha_info)184 dig = []185 for i in sha_info['digest']:186 dig.extend([ ((i>>24) & 0xff), ((i>>16) & 0xff), ((i>>8) & 0xff), (i & 0xff) ])187 return ''.join([chr(i) for i in dig])188class sha256(object):189 digest_size = digestsize = SHA_DIGESTSIZE190 block_size = SHA_BLOCKSIZE191 def __init__(self, s=None):192 self._sha = sha_init()193 if s:194 sha_update(self._sha, s)195 def update(self, s):196 sha_update(self._sha, s)197 def digest(self):198 return sha_final(self._sha.copy())[:self._sha['digestsize']]199 def hexdigest(self):200 return ''.join(['%.2x' % ord(i) for i in self.digest()])201 def copy(self):202 new = sha256.__new__(sha256)203 new._sha = self._sha.copy()204 return new205class sha224(sha256):206 digest_size = digestsize = 28207 def __init__(self, s=None):208 self._sha = sha224_init()209 if s:210 sha_update(self._sha, s)211 def copy(self):212 new = sha224.__new__(sha224)213 new._sha = self._sha.copy()214 return new215def test():216 a_str = "just a test string"217 assert 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855' == sha256().hexdigest()218 assert 'd7b553c6f09ac85d142415f857c5310f3bbbe7cdd787cce4b985acedd585266f' == sha256(a_str).hexdigest()219 assert '8113ebf33c97daa9998762aacafe750c7cefc2b2f173c90c59663a57fe626f21' == sha256(a_str*7).hexdigest()220 s = sha256(a_str)221 s.update(a_str)222 assert '03d9963e05a094593190b6fc794cb1a3e1ac7d7883f0b5855268afeccc70d461' == s.hexdigest()223if __name__ == "__main__":...
Check out the latest blogs from LambdaTest on this topic:
When I started writing tests with Cypress, I was always going to use the user interface to interact and change the applicationโs state when running tests.
Lack of training is something that creates a major roadblock for a tester. Often, testers working in an organization are all of a sudden forced to learn a new framework or an automation tool whenever a new project demands it. You may be overwhelmed on how to learn test automation, where to start from and how to master test automation for web applications, and mobile applications on a new technology so soon.
If you pay close attention, youโll notice that toggle switches are all around us because lots of things have two simple states: either ON or OFF (in binary 1 or 0).
Have you ever visited a website that only has plain text and images? Most probably, no. Itโs because such websites do not exist now. But there was a time when websites only had plain text and images with almost no styling. For the longest time, websites did not focus on user experience. For instance, this is how eBayโs homepage looked in 1999.
Having a good web design can empower business and make your brand stand out. According to a survey by Top Design Firms, 50% of users believe that website design is crucial to an organizationโs overall brand. Therefore, businesses should prioritize website design to meet customer expectations and build their brand identity. Your website is the face of your business, so itโs important that itโs updated regularly as per the current web design trends.
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!