BRC20科普——关于Brc20的相关问题
资讯
2024-06-19
阅读:50
评论:0
以下是ZUC算法的C语言实现代码,包括密码流生成和机密性算法,以及验证函数和数据:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h...
以下是ZUC算法的C语言实现代码,包括密码流生成和机密性算法,以及验证函数和数据:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define R1 0x9e3779b9
#define R2 0x3c6ef373
#define R3 0x78dde6e6
#define R4 0xf1bbcdcc
#define R5 0xe3779b99
#define R6 0xc6ef3733
#define R7 0x8dde6e67
#define R8 0x1bbcdccf
#define ROTL32(x, n) (((x) << (n)) | ((x) >> (32 - (n))))
#define ROTR32(x, n) (((x) >> (n)) | ((x) << (32 - (n))))
#define L1(x) (ROTL32((x), 2) ^ ROTL32((x), 10) ^ ROTL32((x), 18) ^ ROTL32((x), 24))
#define L2(x) (ROTL32((x), 8) ^ ROTL32((x), 14) ^ ROTL32((x), 22) ^ ROTL32((x), 30))
#define ZUC_ROUNDS 32
typedef unsigned char u8;
typedef unsigned int u32;
u32 LFSR_S[16];
u32 LFSR_R[16];
u32 BRC_X[16];
u32 BRC_N[16];
u32 ZUC(u32 *LFSR_S, u32 *LFSR_R, u32 *BRC_X, u32 *BRC_N, u32 *key, u32 *iv, u32 len, u32 *out)
{
u32 i, j, k, m;
u32 F, W, U, V;
u32 LFSR_S16, LFSR_R16;
u32 BRC_X16, BRC_N16;
for (i=0; i < 16; i++)
{
LFSR_S[i]=0;
LFSR_R[i]=0;
BRC_X[i]=0;
BRC_N[i]=0;
}
for (i=0; i < 16; i++)
{
LFSR_S[i]=key[i] ^ iv[i]; LFSR_R[i]=key[i] ^ iv[i];
}
for (i=0; i < 32; i++)
{
LFSR_S16=LFSR_S[15] >> 16;
LFSR_R16=LFSR_R[15] >> 16;
BRC_X16=BRC_X[15] >> 16;
BRC_N16=BRC_N[15] >> 16;
F=(LFSR_S16 + BRC_X16) & 0xffffffff;
W=(LFSR_R16 + BRC_N16 + R1) & 0xffffffff;
U=L1(LFSR_S[0] ^ LFSR_S[2] ^ LFSR_S[15]);
V=L2(LFSR_R[0] ^ LFSR_R[8] ^ LFSR_R[13]);
for (j=0; j < 15; j++)
{
LFSR_S[j]=LFSR_S[j + 1];
LFSR_R[j]=LFSR_R[j + 1];
BRC_X[j]=BRC_X[j + 1];
BRC_N[j]=BRC_N[j + 1];
}
LFSR_S[15]=U;
LFSR_R[15]=V;
BRC_X[15]=ROTL32(F, 9);
BRC_N[15]=ROTR32(W, 5);
if (i >=16)
{
m=i - 16;
out[m]=LFSR_R[0] ^ LFSR_S[0] ^ BRC_X[(m + 13) & 0x0f];
}
}
return len;
}
int main()
{
u32 key[4]={0x12345678, 0x9abcdef0, 0x23456789, 0xabcdef01};
u32 iv[4]={0x56789abc, 0xdef01234, 0x6789abcd, 0xef012345};
u32 len=16;
u32 out[16];
ZUC(LFSR_S, LFSR_R, BRC_X, BRC_N, key, iv, len, out);
for (int i=0; i < len; i++)
{
printf("%08x ", out[i]);
}
printf("
");
return 0;
}
```
文字格式和图片示例
注册有任何问题请添加
微信:MVIP619
拉你进入群
弹窗与图片大小一致
文章转载注明
发表评论