本文整理汇总了C++中Maj函数的典型用法代码示例。如果您正苦于以下问题:C++ Maj函数的具体用法?C++ Maj怎么用?C++ Maj使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Maj函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: sha256_compress
static void sha256_compress(unsigned int* iv, const uint8_t* data) {
unsigned int a, b, c, d, e, f, g, h;
unsigned int s0, s1;
unsigned int t1, t2;
unsigned int work_space[16];
unsigned int n;
unsigned int i;
a = iv[0];
b = iv[1];
c = iv[2];
d = iv[3];
e = iv[4];
f = iv[5];
g = iv[6];
h = iv[7];
for (i = 0; i < 16; ++i) {
n = BigEndian(&data);
t1 = work_space[i] = n;
t1 += h + Sigma1(e) + Ch(e, f, g) + k256[i];
t2 = Sigma0(a) + Maj(a, b, c);
h = g;
g = f;
f = e;
e = d + t1;
d = c;
c = b;
b = a;
a = t1 + t2;
}
for (; i < 64; ++i) {
s0 = work_space[(i + 1) & 0x0f];
s0 = sigma0(s0);
s1 = work_space[(i + 14) & 0x0f];
s1 = sigma1(s1);
t1 = work_space[i & 0xf] += s0 + s1 + work_space[(i + 9) & 0xf];
t1 += h + Sigma1(e) + Ch(e, f, g) + k256[i];
t2 = Sigma0(a) + Maj(a, b, c);
h = g;
g = f;
f = e;
e = d + t1;
d = c;
c = b;
b = a;
a = t1 + t2;
}
iv[0] += a;
iv[1] += b;
iv[2] += c;
iv[3] += d;
iv[4] += e;
iv[5] += f;
iv[6] += g;
iv[7] += h;
}
开发者ID:01org,项目名称:linux-sgx,代码行数:60,代码来源:sha256.c
示例2: sha256_block
static void sha256_block (SHA256_CTX *ctx, const void *in, size_t num, int host)
{
unsigned MD32_REG_T a,b,c,d,e,f,g,h,s0,s1,T1,T2;
SHA_LONG X[16];
int i;
const unsigned char *data=in;
while (num--) {
a = ctx->h[0]; b = ctx->h[1]; c = ctx->h[2]; d = ctx->h[3];
e = ctx->h[4]; f = ctx->h[5]; g = ctx->h[6]; h = ctx->h[7];
if (host)
{
const SHA_LONG *W=(const SHA_LONG *)data;
for (i=0;i<16;i++)
{
T1 = X[i] = W[i];
T1 += h + Sigma1(e) + Ch(e,f,g) + K256[i];
T2 = Sigma0(a) + Maj(a,b,c);
h = g; g = f; f = e; e = d + T1;
d = c; c = b; b = a; a = T1 + T2;
}
data += SHA256_CBLOCK;
}
else
{
SHA_LONG l;
for (i=0;i<16;i++)
{
HOST_c2l(data,l); T1 = X[i] = l;
T1 += h + Sigma1(e) + Ch(e,f,g) + K256[i];
T2 = Sigma0(a) + Maj(a,b,c);
h = g; g = f; f = e; e = d + T1;
d = c; c = b; b = a; a = T1 + T2;
}
}
for (;i<64;i++)
{
s0 = X[(i+1)&0x0f]; s0 = sigma0(s0);
s1 = X[(i+14)&0x0f]; s1 = sigma1(s1);
T1 = X[i&0xf] += s0 + s1 + X[(i+9)&0xf];
T1 += h + Sigma1(e) + Ch(e,f,g) + K256[i];
T2 = Sigma0(a) + Maj(a,b,c);
h = g; g = f; f = e; e = d + T1;
d = c; c = b; b = a; a = T1 + T2;
}
ctx->h[0] += a; ctx->h[1] += b; ctx->h[2] += c; ctx->h[3] += d;
ctx->h[4] += e; ctx->h[5] += f; ctx->h[6] += g; ctx->h[7] += h;
}
}
开发者ID:MatiasNAmendola,项目名称:AuroraUX-SunOS,代码行数:58,代码来源:sha256.c
示例3: sha512_comp
/**
* sha512 compression function - 32-bit machines
* @param res The resulting hash value
* @param hash The chaining input value
* @param in The message input
*/
void sha512_comp (hashblock res, const hashblock hash, const messageblock in)
{
const uint64_t *W=in;
uint64_t A,E,T;
uint64_t X[9+80],*F;
uint64_t H[8];
int i;
for (i = 0; i < SHA512_DIGEST_LENGTH/8; i++) {
H[i]=PULL64(hash[i*8]);
}
F = X+80;
A = H[0]; F[1] = H[1];
F[2] = H[2]; F[3] = H[3];
E = H[4]; F[5] = H[5];
F[6] = H[6]; F[7] = H[7];
for (i=0;i<16;i++,F--)
{
#ifdef B_ENDIAN
T = W[i];
#else
T = PULL64(W[i]);
#endif
F[0] = A;
F[4] = E;
F[8] = T;
T += F[7] + Sigma1(E) + Ch(E,F[5],F[6]) + K512[i];
E = F[3] + T;
A = T + Sigma0(A) + Maj(A,F[1],F[2]);
}
for (;i<80;i++,F--)
{
T = sigma0(F[8+16-1]);
T += sigma1(F[8+16-14]);
T += F[8+16] + F[8+16-9];
F[0] = A;
F[4] = E;
F[8] = T;
T += F[7] + Sigma1(E) + Ch(E,F[5],F[6]) + K512[i];
E = F[3] + T;
A = T + Sigma0(A) + Maj(A,F[1],F[2]);
}
H[0] += A; H[1] += F[1];
H[2] += F[2]; H[3] += F[3];
H[4] += E; H[5] += F[5];
H[6] += F[6]; H[7] += F[7];
for (i = 0; i < SHA512_DIGEST_LENGTH/8; i++) {
PUSH64(H[i],res[i*8]);
}
}
开发者ID:Vieteg,项目名称:EACirc,代码行数:63,代码来源:omdsha512k128n128tau128v1_sha512.cpp
示例4: sha512_block_data_order
/*
* This code should give better results on 32-bit CPU with less than
* ~24 registers, both size and performance wise...
*/
void sha512_block_data_order(uint64_t *state, const uint64_t *W, size_t num) {
uint64_t A, E, T;
uint64_t X[9 + 80], *F;
int i;
while (num--) {
F = X + 80;
A = state[0];
F[1] = state[1];
F[2] = state[2];
F[3] = state[3];
E = state[4];
F[5] = state[5];
F[6] = state[6];
F[7] = state[7];
for (i = 0; i < 16; i++, F--) {
T = from_be_u64(W[i]);
F[0] = A;
F[4] = E;
F[8] = T;
T += F[7] + Sigma1(E) + Ch(E, F[5], F[6]) + K512[i];
E = F[3] + T;
A = T + Sigma0(A) + Maj(A, F[1], F[2]);
}
for (; i < 80; i++, F--) {
T = sigma0(F[8 + 16 - 1]);
T += sigma1(F[8 + 16 - 14]);
T += F[8 + 16] + F[8 + 16 - 9];
F[0] = A;
F[4] = E;
F[8] = T;
T += F[7] + Sigma1(E) + Ch(E, F[5], F[6]) + K512[i];
E = F[3] + T;
A = T + Sigma0(A) + Maj(A, F[1], F[2]);
}
state[0] += A;
state[1] += F[1];
state[2] += F[2];
state[3] += F[3];
state[4] += E;
state[5] += F[5];
state[6] += F[6];
state[7] += F[7];
W += 16;
}
}
开发者ID:placrosse,项目名称:ring,代码行数:55,代码来源:sha512.c
示例5: __attribute__
/** One round of SHA-256. */
void inline __attribute__((always_inline)) Round(__m256i a, __m256i b, __m256i c, __m256i& d, __m256i e, __m256i f, __m256i g, __m256i& h, __m256i k)
{
__m256i t1 = Add(h, Sigma1(e), Ch(e, f, g), k);
__m256i t2 = Add(Sigma0(a), Maj(a, b, c));
d = Add(d, t1);
h = Add(t1, t2);
}
开发者ID:digiblitz,项目名称:bitcoincore,代码行数:8,代码来源:sha256_avx2.cpp
示例6: SHA256Transform
static void
SHA256Transform(uint32_t *H, const uint8_t *cp)
{
uint32_t a, b, c, d, e, f, g, h, t, T1, T2, W[64];
for (t = 0; t < 16; t++, cp += 4)
W[t] = (cp[0] << 24) | (cp[1] << 16) | (cp[2] << 8) | cp[3];
for (t = 16; t < 64; t++)
W[t] = sigma1(W[t - 2]) + W[t - 7] +
sigma0(W[t - 15]) + W[t - 16];
a = H[0]; b = H[1]; c = H[2]; d = H[3];
e = H[4]; f = H[5]; g = H[6]; h = H[7];
for (t = 0; t < 64; t++) {
T1 = h + SIGMA1(e) + Ch(e, f, g) + SHA256_K[t] + W[t];
T2 = SIGMA0(a) + Maj(a, b, c);
h = g; g = f; f = e; e = d + T1;
d = c; c = b; b = a; a = T1 + T2;
}
H[0] += a; H[1] += b; H[2] += c; H[3] += d;
H[4] += e; H[5] += f; H[6] += g; H[7] += h;
}
开发者ID:DangerDexter,项目名称:FreeBSD-8.0-dyntick,代码行数:25,代码来源:sha256.c
示例7: HashSHA256Block
void HashSHA256Block(void* hash_block, SHA256_Context* ctx)
{
unsigned int a,b,c,d,e,f,g,h,T1,T2,i;
unsigned int w[0x40];
unsigned char* block = (unsigned char*)hash_block;
a = ctx->h0; b = ctx->h1;
c = ctx->h2; d = ctx->h3;
e = ctx->h4; f = ctx->h5;
g = ctx->h6; h = ctx->h7;
for (i = 0; i < 16; i++) w[i] = BSWAP(*(unsigned int*)(block + i * 4));
for (i = 16; i < 64; i++) w[i] = SigmaS1(w[i-2]) + w[i-7] + SigmaS0(w[i-15]) + w[i-16];
for (i = 0; i < 64; i++)
{
T1 = h + SigmaB1(e) + Ch(e,f,g) + sha256_constant[i] + w[i];
T2 = SigmaB0(a) + Maj(a,b,c);
h = g;
g = f;
f = e;
e = d + T1;
d = c;
c = b;
b = a;
a = T1 + T2;
}
ctx->h0 += a;
ctx->h1 += b;
ctx->h2 += c;
ctx->h3 += d;
ctx->h4 += e;
ctx->h5 += f;
ctx->h6 += g;
ctx->h7 += h;
a = b = c = d = e = f = g = h = T1 = T2 = 0;
memset(w,0,0x100);
}
开发者ID:Alex12235,项目名称:interactive-text-hooker-andys,代码行数:35,代码来源:sha.cpp
示例8: sha256_comp
/*****************************************
* sha256 compression function *
* *
* H points to chaining input *
* in points to the message input *
* *
*****************************************/
void sha256_comp (hashblock res, const hashblock hash, const void *in)
{
uint32_t a,b,c,d,e,f,g,h,s0,s1,T1,T2;
uint32_t H[8];
uint32_t X[16],l;
int i;
// CHANGE type casting added due to c++
const unsigned char *data=static_cast<const unsigned char*>(in);
for (i = 0; i < SHA256_DIGEST_LENGTH/4; i++) {
HOST_c2l(hash, H[i]);
}
a = H[0]; b = H[1]; c = H[2]; d = H[3];
e = H[4]; f = H[5]; g = H[6]; h = H[7];
for (i=0;i<16;i++)
{
HOST_c2l(data,l); T1 = X[i] = l;
T1 += h + Sigma1(e) + Ch(e,f,g) + K256[i];
T2 = Sigma0(a) + Maj(a,b,c);
h = g;
g = f;
f = e;
e = d + T1;
d = c; c = b; b = a; a = T1 + T2;
}
for (;i<64;i++)
{
s0 = X[(i+1)&0x0f]; s0 = sigma0(s0);
s1 = X[(i+14)&0x0f]; s1 = sigma1(s1);
T1 = X[i&0xf] += s0 + s1 + X[(i+9)&0xf];
T1 += h + Sigma1(e) + Ch(e,f,g) + K256[i];
T2 = Sigma0(a) + Maj(a,b,c);
h = g; g = f; f = e; e = d + T1;
d = c; c = b; b = a; a = T1 + T2;
}
H[0] += a; H[1] += b; H[2] += c; H[3] += d;
H[4] += e; H[5] += f; H[6] += g; H[7] += h;
for (i = 0; i < SHA256_DIGEST_LENGTH/4; i++) {
HOST_l2c(H[i], res);
}
}
开发者ID:Vieteg,项目名称:EACirc,代码行数:54,代码来源:omdsha256k128n96tau64v1_sha256.cpp
示例9: sha512_compress
void sha512_compress(psDigestContext_t * md, unsigned char *buf)
#endif
{
uint64 S[8], W[80], t0, t1;
int i;
/* copy state into S */
for (i = 0; i < 8; i++) {
S[i] = md->sha512.state[i];
}
/* copy the state into 1024-bits into W[0..15] */
for (i = 0; i < 16; i++) {
LOAD64H(W[i], buf + (8*i));
}
/* fill W[16..79] */
for (i = 16; i < 80; i++) {
W[i] = Gamma1(W[i - 2]) + W[i - 7] + Gamma0(W[i - 15]) + W[i - 16];
}
/* Compress */
#ifndef PS_SHA512_IMPROVE_PERF_INCREASE_CODESIZE
for (i = 0; i < 80; i++) {
t0 = S[7] + Sigma1(S[4]) + Ch(S[4], S[5], S[6]) + K[i] + W[i];
t1 = Sigma0(S[0]) + Maj(S[0], S[1], S[2]);
S[7] = S[6];
S[6] = S[5];
S[5] = S[4];
S[4] = S[3] + t0;
S[3] = S[2];
S[2] = S[1];
S[1] = S[0];
S[0] = t0 + t1;
}
#else
#define RND(a,b,c,d,e,f,g,h,i) \
t0 = h + Sigma1(e) + Ch(e, f, g) + K[i] + W[i]; \
t1 = Sigma0(a) + Maj(a, b, c); \
d += t0; \
h = t0 + t1;
for (i = 0; i < 80; i += 8) {
RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],i+0);
RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],i+1);
RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],i+2);
RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],i+3);
RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],i+4);
RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],i+5);
RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],i+6);
RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],i+7);
}
#endif /* PS_SHA512_IMPROVE_PERF_INCREASE_CODESIZE */
/* feedback */
for (i = 0; i < 8; i++) {
md->sha512.state[i] = md->sha512.state[i] + S[i];
}
}
开发者ID:sdhczw,项目名称:winnermicro,代码行数:59,代码来源:sha512.c
示例10: sha256_block_data_order
void sha256_block_data_order (SHA256_CTX *ctx, const void *in)
{
unsigned MD32_REG_T a,b,c,d,e,f,g,h,s0,s1,T1,T2,t;
SHA_LONG X[16],l,Ki;
int i;
const unsigned char *data=in;
a = ctx->h[0]; b = ctx->h[1]; c = ctx->h[2]; d = ctx->h[3];
e = ctx->h[4]; f = ctx->h[5]; g = ctx->h[6]; h = ctx->h[7];
for (i=0;i<16;i++)
{
HOST_c2l(data,l); X[i] = l;
Ki=K256[i];
T1 = l + h + Sigma1(e) + Ch(e,f,g) + Ki;
T2 = Sigma0(a) + Maj(a,b,c);
h = g; g = f; f = e; e = d + T1;
d = c; c = b; b = a; a = T1 + T2;
}
for (;i<64;i++)
{
s0 = X[(i+1)&0x0f]; s0 = sigma0(s0);
s1 = X[(i+14)&0x0f]; s1 = sigma1(s1);
T1 = X[i&0xf];
t = X[(i+9)&0xf];
T1 += s0 + s1 + t;
X[i&0xf] = T1;
Ki=K256[i];
T1 += h + Sigma1(e) + Ch(e,f,g) + Ki;
T2 = Sigma0(a) + Maj(a,b,c);
h = g; g = f; f = e; e = d + T1;
d = c; c = b; b = a; a = T1 + T2;
}
t=ctx->h[0]; ctx->h[0]=t+a;
t=ctx->h[1]; ctx->h[1]=t+b;
t=ctx->h[2]; ctx->h[2]=t+c;
t=ctx->h[3]; ctx->h[3]=t+d;
t=ctx->h[4]; ctx->h[4]=t+e;
t=ctx->h[5]; ctx->h[5]=t+f;
t=ctx->h[6]; ctx->h[6]=t+g;
t=ctx->h[7]; ctx->h[7]=t+h;
return;
}
开发者ID:GaloisInc,项目名称:hacrypto,代码行数:46,代码来源:sha.c
示例11: _sha2block128
void
_sha2block128(uchar *p, ulong len, uint64 *s)
{
uint64 a, b, c, d, e, f, g, h, t1, t2;
uint64 *kp, *wp;
uint64 w[80];
uchar *end;
/* at this point, we have a multiple of 64 bytes */
for(end = p+len; p < end;){
a = s[0];
b = s[1];
c = s[2];
d = s[3];
e = s[4];
f = s[5];
g = s[6];
h = s[7];
for(wp = w; wp < &w[16]; wp++, p += 8)
wp[0] = ((vlong)p[0])<<56 | ((vlong)p[1])<<48 |
((vlong)p[2])<<40 | ((vlong)p[3])<<32 |
p[4] << 24 | p[5] << 16 | p[6] << 8 | p[7];
for(; wp < &w[80]; wp++) {
uint64 s0, s1;
s0 = sigma0(wp[-15]);
s1 = sigma1(wp[-2]);
// wp[0] = sigma1(wp[-2]) + wp[-7] + sigma0(wp[-15]) + wp[-16];
wp[0] = s1 + wp[-7] + s0 + wp[-16];
}
for(kp = K512, wp = w; wp < &w[80]; ) {
t1 = h + SIGMA1(e) + Ch(e,f,g) + *kp++ + *wp++;
t2 = SIGMA0(a) + Maj(a,b,c);
h = g;
g = f;
f = e;
e = d + t1;
d = c;
c = b;
b = a;
a = t1 + t2;
}
/* save state */
s[0] += a;
s[1] += b;
s[2] += c;
s[3] += d;
s[4] += e;
s[5] += f;
s[6] += g;
s[7] += h;
}
}
开发者ID:0intro,项目名称:vx32,代码行数:56,代码来源:sha2block128.c
示例12: sha512_transform
static void
sha512_transform(u64 *state, const u8 *input)
{
u64 a, b, c, d, e, f, g, h, t1, t2;
int i;
u64 W[16];
/* load the state into our registers */
a=state[0]; b=state[1]; c=state[2]; d=state[3];
e=state[4]; f=state[5]; g=state[6]; h=state[7];
/* now iterate */
for (i=0; i<80; i+=8) {
if (!(i & 8)) {
int j;
if (i < 16) {
/* load the input */
for (j = 0; j < 16; j++)
LOAD_OP(i + j, W, input);
} else {
for (j = 0; j < 16; j++) {
BLEND_OP(i + j, W);
}
}
}
t1 = h + e1(e) + Ch(e,f,g) + sha512_K[i ] + W[(i & 15)];
t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2;
t1 = g + e1(d) + Ch(d,e,f) + sha512_K[i+1] + W[(i & 15) + 1];
t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2;
t1 = f + e1(c) + Ch(c,d,e) + sha512_K[i+2] + W[(i & 15) + 2];
t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2;
t1 = e + e1(b) + Ch(b,c,d) + sha512_K[i+3] + W[(i & 15) + 3];
t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2;
t1 = d + e1(a) + Ch(a,b,c) + sha512_K[i+4] + W[(i & 15) + 4];
t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2;
t1 = c + e1(h) + Ch(h,a,b) + sha512_K[i+5] + W[(i & 15) + 5];
t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2;
t1 = b + e1(g) + Ch(g,h,a) + sha512_K[i+6] + W[(i & 15) + 6];
t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2;
t1 = a + e1(f) + Ch(f,g,h) + sha512_K[i+7] + W[(i & 15) + 7];
t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2;
}
state[0] += a; state[1] += b; state[2] += c; state[3] += d;
state[4] += e; state[5] += f; state[6] += g; state[7] += h;
/* erase our data */
a = b = c = d = e = f = g = h = t1 = t2 = 0;
}
开发者ID:congwang,项目名称:linux,代码行数:52,代码来源:sha512_generic.c
示例13: block
/*
========================================================================
Routine Description:
SHA256 computation for one block (512 bits)
Arguments:
pSHA_CTX Pointer to SHA256_CTX_STRUC
Return Value:
None
Note:
None
========================================================================
*/
VOID RT_SHA256_Hash (
IN SHA256_CTX_STRUC *pSHA_CTX)
{
uint32_t W_i,t;
uint32_t W[64];
uint32_t a,b,c,d,e,f,g,h,T1,T2;
/* Prepare the message schedule, {W_i}, 0 < t < 15 */
memmove(W, pSHA_CTX->Block, SHA256_BLOCK_SIZE);
for (W_i = 0; W_i < 16; W_i++)
W[W_i] = cpu2be32(W[W_i]); /* Endian Swap */
/* End of for */
/* SHA256 hash computation */
/* Initialize the working variables */
a = pSHA_CTX->HashValue[0];
b = pSHA_CTX->HashValue[1];
c = pSHA_CTX->HashValue[2];
d = pSHA_CTX->HashValue[3];
e = pSHA_CTX->HashValue[4];
f = pSHA_CTX->HashValue[5];
g = pSHA_CTX->HashValue[6];
h = pSHA_CTX->HashValue[7];
/* 64 rounds */
for (t = 0;t < 64;t++) {
if (t > 15) /* Prepare the message schedule, {W_i}, 16 < t < 63 */
W[t] = Sigma_256_1(W[t-2]) + W[t-7] + Sigma_256_0(W[t-15]) + W[t-16];
/* End of if */
T1 = h + Zsigma_256_1(e) + Ch(e,f,g) + SHA256_K[t] + W[t];
T2 = Zsigma_256_0(a) + Maj(a,b,c);
h = g;
g = f;
f = e;
e = d + T1;
d = c;
c = b;
b = a;
a = T1 + T2;
} /* End of for */
/* Compute the i^th intermediate hash value H^(i) */
pSHA_CTX->HashValue[0] += a;
pSHA_CTX->HashValue[1] += b;
pSHA_CTX->HashValue[2] += c;
pSHA_CTX->HashValue[3] += d;
pSHA_CTX->HashValue[4] += e;
pSHA_CTX->HashValue[5] += f;
pSHA_CTX->HashValue[6] += g;
pSHA_CTX->HashValue[7] += h;
memset(pSHA_CTX->Block, 0, SHA256_BLOCK_SIZE);
pSHA_CTX->BlockLen = 0;
} /* End of RT_SHA256_Hash */
开发者ID:ulli-kroll,项目名称:mt7612u,代码行数:69,代码来源:crypt_sha2.c
示例14: _sha2block64
void
_sha2block64(uchar *p, ulong len, uint32 *s)
{
uint32 a, b, c, d, e, f, g, h, t1, t2;
uint32 *kp, *wp;
uint32 w[64];
uchar *end;
/* at this point, we have a multiple of 64 bytes */
for(end = p+len; p < end;){
a = s[0];
b = s[1];
c = s[2];
d = s[3];
e = s[4];
f = s[5];
g = s[6];
h = s[7];
for(wp = w; wp < &w[16]; wp++, p += 4)
wp[0] = p[0] << 24 | p[1] << 16 | p[2] << 8 | p[3];
for(; wp < &w[64]; wp++)
wp[0] = sigma1(wp[-2]) + wp[-7] +
sigma0(wp[-15]) + wp[-16];
for(kp = K256, wp = w; wp < &w[64]; ) {
t1 = h + SIGMA1(e) + Ch(e,f,g) + *kp++ + *wp++;
t2 = SIGMA0(a) + Maj(a,b,c);
h = g;
g = f;
f = e;
e = d + t1;
d = c;
c = b;
b = a;
a = t1 + t2;
}
/* save state */
s[0] += a;
s[1] += b;
s[2] += c;
s[3] += d;
s[4] += e;
s[5] += f;
s[6] += g;
s[7] += h;
}
}
开发者ID:0intro,项目名称:vx32,代码行数:49,代码来源:sha2block64.c
示例15: processblock
static void
processblock(struct sha512 *s, const uint8_t *buf)
{
uint64_t W[80], t1, t2, a, b, c, d, e, f, g, h;
int i;
for (i = 0; i < 16; i++) {
W[i] = (uint64_t)buf[8*i]<<56;
W[i] |= (uint64_t)buf[8*i+1]<<48;
W[i] |= (uint64_t)buf[8*i+2]<<40;
W[i] |= (uint64_t)buf[8*i+3]<<32;
W[i] |= (uint64_t)buf[8*i+4]<<24;
W[i] |= (uint64_t)buf[8*i+5]<<16;
W[i] |= (uint64_t)buf[8*i+6]<<8;
W[i] |= buf[8*i+7];
}
for (; i < 80; i++)
W[i] = R1(W[i-2]) + W[i-7] + R0(W[i-15]) + W[i-16];
a = s->h[0];
b = s->h[1];
c = s->h[2];
d = s->h[3];
e = s->h[4];
f = s->h[5];
g = s->h[6];
h = s->h[7];
for (i = 0; i < 80; i++) {
t1 = h + S1(e) + Ch(e,f,g) + K[i] + W[i];
t2 = S0(a) + Maj(a,b,c);
h = g;
g = f;
f = e;
e = d + t1;
d = c;
c = b;
b = a;
a = t1 + t2;
}
s->h[0] += a;
s->h[1] += b;
s->h[2] += c;
s->h[3] += d;
s->h[4] += e;
s->h[5] += f;
s->h[6] += g;
s->h[7] += h;
}
开发者ID:maandree,项目名称:sbase,代码行数:47,代码来源:sha512.c
示例16: SHA256_transform
static void SHA256_transform( SHA256_ctx* ctx )
{
int t;
unsigned int A = ctx->H[ 0 ];
unsigned int B = ctx->H[ 1 ];
unsigned int C = ctx->H[ 2 ];
unsigned int D = ctx->H[ 3 ];
unsigned int E = ctx->H[ 4 ];
unsigned int F = ctx->H[ 5 ];
unsigned int G = ctx->H[ 6 ];
unsigned int H = ctx->H[ 7 ];
unsigned int T1, T2;
unsigned int W[ 64 ];
memcpy( W, ctx->M, 64 );
for ( t = 16; t < 64; t++ )
{
W[ t ] = sig1(W[t-2]) + W[t-7] + sig0(W[t-15]) + W[t-16];
}
for ( t = 0; t < 64; t++ )
{
T1 = H + SIG1(E) + Ch(E,F,G) + K[t] + W[t];
T2 = SIG0(A) + Maj(A,B,C);
H = G;
G = F;
F = E;
E = D + T1;
D = C;
C = B;
B = A;
A = T1 + T2;
}
ctx->H[ 0 ] += A;
ctx->H[ 1 ] += B;
ctx->H[ 2 ] += C;
ctx->H[ 3 ] += D;
ctx->H[ 4 ] += E;
ctx->H[ 5 ] += F;
ctx->H[ 6 ] += G;
ctx->H[ 7 ] += H;
}
开发者ID:Distrotech,项目名称:deltarpm,代码行数:45,代码来源:sha256.c
示例17: sha256_compress
static void sha256_compress(hash_state * md)
#endif
{
unsigned long S[8], W[64], t0, t1;
int i;
_ARGCHK(md != NULL);
/* copy state into S */
for (i = 0; i < 8; i++)
S[i] = md->sha256.state[i];
/* copy the state into 512-bits into W[0..15] */
for (i = 0; i < 16; i++) {
LOAD32H(W[i], md->sha256.buf + (4*i));
}
/* fill W[16..63] */
for (i = 16; i < 64; i++) {
W[i] = Gamma1(W[i - 2]) + W[i - 7] + Gamma0(W[i - 15]) + W[i - 16];
}
/* Compress */
for (i = 0; i < 64; i++) {
t0 = S[7] + Sigma1(S[4]) + Ch(S[4], S[5], S[6]) + K[i] + W[i];
t1 = Sigma0(S[0]) + Maj(S[0], S[1], S[2]);
S[7] = S[6];
S[6] = S[5];
S[5] = S[4];
S[4] = S[3] + t0;
S[3] = S[2];
S[2] = S[1];
S[1] = S[0];
S[0] = t0 + t1;
}
/* feedback */
for (i = 0; i < 8; i++) {
md->sha256.state[i] = md->sha256.state[i] + S[i];
}
}
开发者ID:TheTypoMaster,项目名称:AH4222,代码行数:42,代码来源:sha256.c
示例18: S1
void GflSHA256::Generate(void)
{
int i;
DWORD W[SHA256_WORK];
DWORD Hash[SHA256_WORK + SHA256_HASH];
for(i = 0; i < SHA256_BLOCK; i++) W[i] = ReverseEndian(m_aBlock[i]);
for(i = SHA256_BLOCK; i < SHA256_WORK; i++) W[i] = s1(W[i - 2]) + W[i - 7] + s0(W[i - 15]) + W[i - 16];
for(i = 0; i < SHA256_HASH; i++) Hash[SHA256_WORK + i] = m_dwH[i];
DWORD *pHash = &Hash[SHA256_WORK];
DWORD dwT1, dwT2;
for(i = 0; i < SHA256_WORK; i++){
pHash--;
dwT1 = pHash[8] + S1(pHash[5]) + Ch(pHash[5], pHash[6], pHash[7]) + c_dwK[i] + W[i];
dwT2 = S0(pHash[1]) + Maj(pHash[1], pHash[2], pHash[3]);
pHash[0] = dwT1 + dwT2;
pHash[4] += dwT1;
}
for(i = 0; i < SHA256_HASH; i++) m_dwH[i] += pHash[i];
}
开发者ID:neri,项目名称:op05,代码行数:21,代码来源:GflSHA256.cpp
示例19: shs_transform
static void shs_transform(sha256 *sh)
{ /* basic transformation step */
mr_unsign32 a,b,c,d,e,f,g,h,t1,t2;
int j;
for (j=16; j<64; j++)
sh->w[j]=theta1(sh->w[j-2])+sh->w[j-7]+theta0(sh->w[j-15])+sh->w[j-16];
a=sh->h[0];
b=sh->h[1];
c=sh->h[2];
d=sh->h[3];
e=sh->h[4];
f=sh->h[5];
g=sh->h[6];
h=sh->h[7];
for (j=0; j<64; j++)
{ /* 64 times - mush it up */
t1=h+Sig1(e)+Ch(e,f,g)+K[j]+sh->w[j];
t2=Sig0(a)+Maj(a,b,c);
h=g;
g=f;
f=e;
e=d+t1;
d=c;
c=b;
b=a;
a=t1+t2;
}
sh->h[0]+=a;
sh->h[1]+=b;
sh->h[2]+=c;
sh->h[3]+=d;
sh->h[4]+=e;
sh->h[5]+=f;
sh->h[6]+=g;
sh->h[7]+=h;
}
开发者ID:J0s3f,项目名称:FiSH-irssi,代码行数:38,代码来源:mrshs256.c
示例20: myF
static void myF(myu64 *state, const myu64 *w, int k_index)
{
myu64 t, t1, t2;
unsigned char i;
Ch(&t, state+4, state+5, state+6);
Sigma(&t1, state+4, 14, 18, 23);
bigint_add64(t1.v, t1.v, (state+7)->v);
bigint_add64(t1.v, t1.v, t.v);
for(i=0;i<8;i++)
t.v[i] = pgm_read_byte((unsigned char *)roundconstants_pgm+k_index*8+i);
bigint_add64(t1.v, t1.v, t.v);
bigint_add64(t1.v, t1.v, w->v);
Sigma(&t2, state+0, 28, 34, 5);
Maj(&t,state+0,state+1,state+2);
bigint_add64(t2.v, t2.v, t.v);
*(state+7) = *(state+6);
*(state+6) = *(state+5);
*(state+5) = *(state+4);
bigint_add64((state+4)->v, (state+3)->v, t1.v);
*(state+3) = *(state+2);
*(state+2) = *(state+1);
*(state+1) = *(state+0);
bigint_add64((state+0)->v, t1.v, t2.v);
}
开发者ID:piyushpandey013,项目名称:bailingwire,代码行数:24,代码来源:sha512.c
注:本文中的Maj函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论