Skip to content

Instantly share code, notes, and snippets.

@bga
Created June 3, 2010 09:32
Show Gist options
  • Save bga/423687 to your computer and use it in GitHub Desktop.
Save bga/423687 to your computer and use it in GitHub Desktop.
#include <stdio.h>
#include <stdlib.h>
typedef int uint;
uint _sha1(uint * xs, uint len)
{
uint v85,v84,v83,v82,v81,v80,v79,v78,v77,v76,v75,v74,v73,v72,v71,v70,v69,v68,v67,v66,v65,v64,v63,v62,v61,v60,v59,v58,v57,v56,v55,v54,v53,v52,v51,v50,v49,v48,v47,v46,v45,v44,v43,v42,v41,v40,v39,v38,v37,v36,v35,v34,v33,v32,v31,v30,v29,v28,v27,v26,v25,v24,v23,v22,v21,v20,v19,v18,v17,v16,v15,v14,v13,v12,v11,v10,v9,v8,v7,v6,v5,v4,v3,v2,v1,v0;
uint a=0x67452301,
b=0xefcdab89,
c=0x98badcfe,
d=0x10325476,
e=0xc3d2e1f0
;
uint j=-16; while((j+=16)<len){
e=(e+((v1=((v82=(((v83=(((v84=(((v85=(((v68=(((v69=(((v6=(((v7=(((v8=(((v9=(((v10=(((v11=(((v12=(((v13=(((v14=(((v15=(((v16=(((v17=(((v18=(((v19=(((v20=(((v21=(((v22=(((v23=(((v24=(((v25=(((v26=(((v27=(((v28=(((v29=(((v30=(((v31=(((v32=(((v33=(((v34=(((v35=(((v36=(((v37=(((v38=(((v39=(((v40=(((v41=(((v42=(((v43=(((v44=(((v45=(((v46=(((v47=(((v48=(((v49=(((v50=(((v51=(((v52=(((v53=(((v54=(((v55=(((v56=(((v57=(((v58=(((v59=(((v60=(((v61=(((v62=(((v63=(((v64=(((v65=(((v66=(((v67=(((v79=(((v81=(((v77=(((v78=(((v70=(((v71=(((v72=(((v76=((a<<5)|(a>>27))+((b&c)|((~b)&d))+e+0x5a827999+(v2=xs[0+j]))<<5)|(v76>>27))+((a&(v73=(b<<30)|(b>>2)))|((~a)&c))+d+0x5a827999+(v75=xs[1+j]))<<5)|(v72>>27))+((v76&(v80=(a<<30)|(a>>2)))|((~v76)&v73))+c+0x5a827999+(v74=xs[2+j]))<<5)|(v71>>27))+((v72&(v5=(v76<<30)|(v76>>2)))|((~v72)&v80))+v73+0x5a827999+(v73=xs[3+j]))<<5)|(v70>>27))+((v71&(v4=(v72<<30)|(v72>>2)))|((~v71)&v5))+v80+0x5a827999+(v0=xs[4+j]))<<5)|(v78>>27))+((v70&(v3=(v71<<30)|(v71>>2)))|((~v70)&v4))+v5+0x5a827999+(v71=xs[5+j]))<<5)|(v77>>27))+((v78&(v5=(v70<<30)|(v70>>2)))|((~v78)&v3))+v4+0x5a827999+(v70=xs[6+j]))<<5)|(v81>>27))+((v77&(v4=(v78<<30)|(v78>>2)))|((~v77)&v5))+v3+0x5a827999+(v78=xs[7+j]))<<5)|(v79>>27))+((v81&(v3=(v77<<30)|(v77>>2)))|((~v81)&v4))+v5+0x5a827999+(v77=xs[8+j]))<<5)|(v67>>27))+((v79&(v5=(v81<<30)|(v81>>2)))|((~v79)&v3))+v4+0x5a827999+(v80=xs[9+j]))<<5)|(v66>>27))+((v67&(v4=(v79<<30)|(v79>>2)))|((~v67)&v5))+v3+0x5a827999+(v79=xs[10+j]))<<5)|(v65>>27))+((v66&(v3=(v67<<30)|(v67>>2)))|((~v66)&v4))+v5+0x5a827999+(v76=xs[11+j]))<<5)|(v64>>27))+((v65&(v67=(v66<<30)|(v66>>2)))|((~v65)&v3))+v4+0x5a827999+(v72=xs[12+j]))<<5)|(v63>>27))+((v64&(v66=(v65<<30)|(v65>>2)))|((~v64)&v67))+v3+0x5a827999+(v81=xs[13+j]))<<5)|(v62>>27))+((v63&(v65=(v64<<30)|(v64>>2)))|((~v63)&v66))+v67+0x5a827999+(v5=xs[14+j]))<<5)|(v61>>27))+((v62&(v64=(v63<<30)|(v63>>2)))|((~v62)&v65))+v66+0x5a827999+(v4=xs[15+j]))<<5)|(v60>>27))+((v61&(v63=(v62<<30)|(v62>>2)))|((~v61)&v64))+v65+0x5a827999+(v3=v81^v77^v2))<<5)|(v59>>27))+((v60&(v62=(v61<<30)|(v61>>2)))|((~v60)&v63))+v64+0x5a827999+(v2=v5^v80^v75))<<5)|(v58>>27))+((v59&(v61=(v60<<30)|(v60>>2)))|((~v59)&v62))+v63+0x5a827999+(v75=v4^v79^v74))<<5)|(v57>>27))+((v58&(v60=(v59<<30)|(v59>>2)))|((~v58)&v61))+v62+0x5a827999+(v74=v3^v76^v73))<<5)|(v56>>27))+(v57^(v59=(v58<<30)|(v58>>2))^v60)+v61+0x6ed9eba1+(v73=v2^v72^v0))<<5)|(v55>>27))+(v56^(v58=(v57<<30)|(v57>>2))^v59)+v60+0x6ed9eba1+(v0=v75^v81^v71))<<5)|(v54>>27))+(v55^(v57=(v56<<30)|(v56>>2))^v58)+v59+0x6ed9eba1+(v71=v74^v5^v70))<<5)|(v53>>27))+(v54^(v56=(v55<<30)|(v55>>2))^v57)+v58+0x6ed9eba1+(v70=v73^v4^v78))<<5)|(v52>>27))+(v53^(v55=(v54<<30)|(v54>>2))^v56)+v57+0x6ed9eba1+(v78=v0^v3^v77))<<5)|(v51>>27))+(v52^(v54=(v53<<30)|(v53>>2))^v55)+v56+0x6ed9eba1+(v77=v71^v2^v80))<<5)|(v50>>27))+(v51^(v53=(v52<<30)|(v52>>2))^v54)+v55+0x6ed9eba1+(v80=v70^v75^v79))<<5)|(v49>>27))+(v50^(v52=(v51<<30)|(v51>>2))^v53)+v54+0x6ed9eba1+(v79=v78^v74^v76))<<5)|(v48>>27))+(v49^(v51=(v50<<30)|(v50>>2))^v52)+v53+0x6ed9eba1+(v76=v77^v73^v72))<<5)|(v47>>27))+(v48^(v50=(v49<<30)|(v49>>2))^v51)+v52+0x6ed9eba1+(v72=v80^v0^v81))<<5)|(v46>>27))+(v47^(v49=(v48<<30)|(v48>>2))^v50)+v51+0x6ed9eba1+(v81=v79^v71^v5))<<5)|(v45>>27))+(v46^(v48=(v47<<30)|(v47>>2))^v49)+v50+0x6ed9eba1+(v5=v76^v70^v4))<<5)|(v44>>27))+(v45^(v47=(v46<<30)|(v46>>2))^v48)+v49+0x6ed9eba1+(v4=v72^v78^v3))<<5)|(v43>>27))+(v44^(v46=(v45<<30)|(v45>>2))^v47)+v48+0x6ed9eba1+(v3=v81^v77^v2))<<5)|(v42>>27))+(v43^(v45=(v44<<30)|(v44>>2))^v46)+v47+0x6ed9eba1+(v2=v5^v80^v75))<<5)|(v41>>27))+(v42^(v44=(v43<<30)|(v43>>2))^v45)+v46+0x6ed9eba1+(v75=v4^v79^v74))<<5)|(v40>>27))+(v41^(v43=(v42<<30)|(v42>>2))^v44)+v45+0x6ed9eba1+(v74=v3^v76^v73))<<5)|(v39>>27))+(v40^(v42=(v41<<30)|(v41>>2))^v43)+v44+0x6ed9eba1+(v73=v2^v72^v0))<<5)|(v38>>27))+(v39^(v41=(v40<<30)|(v40>>2))^v42)+v43+0x6ed9eba1+(v0=v75^v81^v71))<<5)|(v37>>27))+(v38^(v40=(v39<<30)|(v39>>2))^v41)+v42+0x6ed9eba1+(v71=v74^v5^v70))<<5)|(v36>>27))+((v37&(v39=(v38<<30)|(v38>>2)))|(v37&v40)|(v39&v40))+v41+0x8f1bbcdc+(v70=v73^v4^v78))<<5)|(v35>>27))+((v36&(v38=(v37<<30)|(v37>>2)))|(v36&v39)|(v38&v39))+v40+0x8f1bbcdc+(v78=v0^v3^v77))<<5)|(v34>>27))+((v35&(v37=(v36<<30)|(v36>>2)))|(v35&v38)|(v37&v38))+v39+0x8f1bbcdc+(v77=v71^v2^v80))<<5)|(v33>>27))+((v34&(v36=(v35<<30)|(v35>>2)))|(v34&v37)|(v36&v37))+v38+0x8f1bbcdc+(v80=v70^v75^v79))<<5)|(v32>>27))+((v33&(v35=(v34<<30)|(v34>>2)))|(v33&v36)|(v35&v36))+v37+0x8f1bbcdc+(v79=v78^v74^v76))<<5)|(v31>>27))+((v32&(v34=(v33<<30)|(v33>>2)))|(v32&v35)|(v34&v35))+v36+0x8f1bbcdc+(v76=v77^v73^v72))<<5)|(v30>>27))+((v31&(v33=(v32<<30)|(v32>>2)))|(v31&v34)|(v33&v34))+v35+0x8f1bbcdc+(v72=v80^v0^v81))<<5)|(v29>>27))+((v30&(v32=(v31<<30)|(v31>>2)))|(v30&v33)|(v32&v33))+v34+0x8f1bbcdc+(v81=v79^v71^v5))<<5)|(v28>>27))+((v29&(v31=(v30<<30)|(v30>>2)))|(v29&v32)|(v31&v32))+v33+0x8f1bbcdc+(v5=v76^v70^v4))<<5)|(v27>>27))+((v28&(v30=(v29<<30)|(v29>>2)))|(v28&v31)|(v30&v31))+v32+0x8f1bbcdc+(v4=v72^v78^v3))<<5)|(v26>>27))+((v27&(v29=(v28<<30)|(v28>>2)))|(v27&v30)|(v29&v30))+v31+0x8f1bbcdc+(v3=v81^v77^v2))<<5)|(v25>>27))+((v26&(v28=(v27<<30)|(v27>>2)))|(v26&v29)|(v28&v29))+v30+0x8f1bbcdc+(v2=v5^v80^v75))<<5)|(v24>>27))+((v25&(v27=(v26<<30)|(v26>>2)))|(v25&v28)|(v27&v28))+v29+0x8f1bbcdc+(v75=v4^v79^v74))<<5)|(v23>>27))+((v24&(v26=(v25<<30)|(v25>>2)))|(v24&v27)|(v26&v27))+v28+0x8f1bbcdc+(v74=v3^v76^v73))<<5)|(v22>>27))+((v23&(v25=(v24<<30)|(v24>>2)))|(v23&v26)|(v25&v26))+v27+0x8f1bbcdc+(v73=v2^v72^v0))<<5)|(v21>>27))+((v22&(v24=(v23<<30)|(v23>>2)))|(v22&v25)|(v24&v25))+v26+0x8f1bbcdc+(v0=v75^v81^v71))<<5)|(v20>>27))+((v21&(v23=(v22<<30)|(v22>>2)))|(v21&v24)|(v23&v24))+v25+0x8f1bbcdc+(v71=v74^v5^v70))<<5)|(v19>>27))+((v20&(v22=(v21<<30)|(v21>>2)))|(v20&v23)|(v22&v23))+v24+0x8f1bbcdc+(v70=v73^v4^v78))<<5)|(v18>>27))+((v19&(v21=(v20<<30)|(v20>>2)))|(v19&v22)|(v21&v22))+v23+0x8f1bbcdc+(v78=v0^v3^v77))<<5)|(v17>>27))+((v18&(v20=(v19<<30)|(v19>>2)))|(v18&v21)|(v20&v21))+v22+0x8f1bbcdc+(v77=v71^v2^v80))<<5)|(v16>>27))+(v17^(v19=(v18<<30)|(v18>>2))^v20)+v21+0xca62c1d6+(v80=v70^v75^v79))<<5)|(v15>>27))+(v16^(v18=(v17<<30)|(v17>>2))^v19)+v20+0xca62c1d6+(v79=v78^v74^v76))<<5)|(v14>>27))+(v15^(v17=(v16<<30)|(v16>>2))^v18)+v19+0xca62c1d6+(v76=v77^v73^v72))<<5)|(v13>>27))+(v14^(v16=(v15<<30)|(v15>>2))^v17)+v18+0xca62c1d6+(v72=v80^v0^v81))<<5)|(v12>>27))+(v13^(v15=(v14<<30)|(v14>>2))^v16)+v17+0xca62c1d6+(v81=v79^v71^v5))<<5)|(v11>>27))+(v12^(v14=(v13<<30)|(v13>>2))^v15)+v16+0xca62c1d6+(v5=v76^v70^v4))<<5)|(v10>>27))+(v11^(v13=(v12<<30)|(v12>>2))^v14)+v15+0xca62c1d6+(v4=v72^v78^v3))<<5)|(v9>>27))+(v10^(v12=(v11<<30)|(v11>>2))^v13)+v14+0xca62c1d6+(v3=v81^v77^v2))<<5)|(v8>>27))+(v9^(v11=(v10<<30)|(v10>>2))^v12)+v13+0xca62c1d6+(v2=v5^v80^v75))<<5)|(v7>>27))+(v8^(v10=(v9<<30)|(v9>>2))^v11)+v12+0xca62c1d6+(v75=v4^v79^v74))<<5)|(v6>>27))+(v7^(v9=(v8<<30)|(v8>>2))^v10)+v11+0xca62c1d6+(v74=v3^v76^v73))<<5)|(v69>>27))+(v6^(v8=(v7<<30)|(v7>>2))^v9)+v10+0xca62c1d6+(v73=v2^v72^v0))<<5)|(v68>>27))+(v69^(v7=(v6<<30)|(v6>>2))^v8)+v9+0xca62c1d6+(v0=v75^v81^v71))<<5)|(v85>>27))+(v68^(v6=(v69<<30)|(v69>>2))^v7)+v8+0xca62c1d6+(v71=v74^v5^v70))<<5)|(v84>>27))+(v85^(v5=(v68<<30)|(v68>>2))^v6)+v7+0xca62c1d6+(v70=v73^v4^v78))<<5)|(v83>>27))+(v84^(v4=(v85<<30)|(v85>>2))^v5)+v6+0xca62c1d6+(v78=v0^v3^v77))<<30)|(v82>>2))));
;d=(d+((v0=((v81=((v82<<5)|(v82>>27))+(v83^(v3=(v84<<30)|(v84>>2))^v4)+v5+0xca62c1d6+(v77=v71^v2^v80))<<30)|(v81>>2))));
;c=(c+(((v80=((v81<<5)|(v81>>27))+(v82^(v2=(v83<<30)|(v83>>2))^v3)+v4+0xca62c1d6+(v70^v75^v79))<<30)|(v80>>2)));
;b=(b+((v79=((v80<<5)|(v80>>27))+(v81^v1^v2)+v3+0xca62c1d6+(v78^v74^v76))));
;a=(a+((((v79<<5)|(v79>>27))+(v80^v0^v1)+v2+0xca62c1d6+(v77^v73^v72))));
;}
return a + b + c + d + e;
}
uint _sha1Loop(uint * xs, uint len)
{
uint h0 = 0x67452301,
h1 = 0xefcdab89,
h2 = 0x98badcfe,
h3 = 0x10325476,
h4 = 0xc3d2e1f0,
t,
i, j,
a, b, c, d, e;
uint w[80];
j = -16; while((j += 16) < len)
{
i = -1; while(++i < 16)
w[i] = xs[i + j];
i = 15; while(++i < 80)
w[i] = w[i - 3]^w[i - 8]^w[i - 16];
a = h0;
b = h1;
c = h2;
d = h3;
e = h4;
i = -1;
while(++i < 20)
{
t = (((a << 0x5)|(a >> 0x1b)) + ((b&c)|((~b)&d)) + e + 0x5a827999 + w[i]);
e = d;
d = c;
c = (b << 0x1e)|(b >> 0x2);
b = a;
a = t;
}
--i;
while(++i < 40)
{
t = (((a << 0x5)|(a >> 0x1b)) + (b^c^d) + e + 0x6ed9eba1 + w[i]);
e = d;
d = c;
c = (b << 0x1e)|(b >> 0x2);
b = a;
a = t;
}
--i;
while(++i < 60)
{
t = (((a << 0x5)|(a >> 0x1b)) + ((b&c)|(b&d)|(c&d)) + e + 0x8f1bbcdc + w[i]);
e = d;
d = c;
c = (b << 0x1e)|(b >> 0x2);
b = a;
a = t;
}
--i;
while(++i < 80)
{
t = (((a << 0x5)|(a >> 0x1b)) + (b^c^d) + e + 0xca62c1d6 + w[i]);
e = d;
d = c;
c = (b << 0x1e)|(b >> 0x2);
b = a;
a = t;
}
h0 += a;
h1 += b;
h2 += c;
h3 += d;
h4 += e;
}
return h0 + h1 + h2 + h3 + h4;
};
int main(int argc, char ** argv)
{
uint n = 16*atoi(argv[1]);
uint * xs = (uint *)malloc(4*n);
uint i, d;
d = clock();
i = n; while(i--)
xs[i] = i;
printf("fill %i\n", (clock() - d));
d = clock();
printf("%i", _sha1Loop(xs, n));
printf("_sha1Loop %i\n", (clock() - d));
d = clock();
printf("%i", _sha1(xs, n));
printf("_sha1 %i\n", (clock() - d));
free(xs);
return 0;
}
@cjnzekwe
Copy link

How do I work with dataset like this?

names(Spring_Aca) [1] "V1" "V2" "V3" "V4" "V5" "V6" "V7" "V8" "V9" "V10" "V11" "V12" "V13" "V14" "V15" [16] "V16" "V17" "V18" "V19" "V20" "V21" "V22" "V23" "V24" "V25" "V26" "V27" "V28" "V29" "V30" [31] "V31" "V32" "V33" "V34" "V35" "V36" "V37" "V38" > names(Spring_Att) [1] "V1" "V2" "V3" "V4" "V5" "V6" "V7" "V8" "V9" "V10" "V11" "V12" "V13" "V14" "V15" [16] "V16" "V17" "V18" "V19" "V20" "V21" "V22" "V23" "V24" "V25" "V26" "V27" "V28" "V29" "V30" [31] "V31" "V32" "V33" "V34" "V35" "V36" "V37" "V38" "V39" "V40" "V41" "V42" "V43" "V44" "V45" [46] "V46" "V47" "V48" "V49" "V50" "V51" "V52" "V53" "V54" "V55" "V56" "V57" "V58" > names(Spring_Math) [1] "V1" "V2" "V3" "V4" "V5" "V6" "V7" "V8" "V9" "V10" "V11" "V12" "V13" "V14" "V15" [16] "V16" "V17" "V18" "V19" "V20" "V21" "V22" "V23" "V24" "V25" "V26" "V27" "V28" "V29" "V30" [31] "V31" "V32" "V33" "V34" "V35" "V36" "V37" "V38" "V39" "V40" "V41" "V42" "V43" "V44" "V45" [46] "V46"
--
 
| >

Please, I need to know how to clean the data or proper read the data and assign names to each column

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment