我需要了解Md5哈希算法.我正在阅读文件,并说明
"消息被"填充"(扩展),使得它的长度(以位为单位)与448一致,模512.也就是说,消息被扩展,使得它只是64位,是512位长的倍数.即使消息的长度已经达到448,模512,也始终执行填充."
我需要理解这简单来说意味着什么,特别是448模512. MODULO这个词就是问题.我会很感激这个简单的例子.有趣的是,这是MD5哈希的第一步!:)
谢谢
我的GCM SP-800-38D文档中puting开块的乘法(Alogrithm 1)C代码这里.第11-12页.
完成代码后,我想看看是否有任何方法可以测试代码.您可以在我提供的代码下面找到附件.请注意,我使用24位块代替128位块,仅用于测试目的.如有必要,我将不胜感激.
void BLK_MUL (u8 *val_1,u8 *val_2, u8 *out_val)
{
u8 xdata R_val = 0xE1;
u8 xdata Z_val[3],V_val[3];
u8 mask_b = 0x80;
u16 i; u8 j;
bit rnd;
for(j=0;j<3;j++,++val_2)
{
Z_val[j]=0x00;
V_val[j]=*val_2;
}
for(i=0;i<24;i++)
{
if (*val_1 & mask_b)
{
for(j=0;j<3;j++)
Z_val[j]^=V_val[j];
}
if (!(V_val[2] & 0x01))
{//if LSB of V_val is 0
for(j=0;j<3;j++)
{ //V_val = rightshift(V_val)
if (j!=0)
if (V_val[2-j] & 0x01)
V_val[3-j] |= 0x80;
V_val[2-j]>>=1;
}
}
else
{//if LSB of V_val is …Run Code Online (Sandbox Code Playgroud) 我不知道这是否可行,但有助于提出建议.
我有一个变量unsigned char Var_2_insert;,我有一个数组const unsigned char insert_here[4];.
该变量在运行时初始化var_2_insert = 225;.我们的想法是数组中的索引3应始终具有var_2_insert的值.所以我想尝试类似的东西
insert_here[4] = { 0x00, 0x02, 0x03, Var_2_insert};
Run Code Online (Sandbox Code Playgroud)
因此,每当我尝试读取数组时insert here,它将具有var_2_insert的当前值.现在我知道我是这样的:
#define Var_2_insert 225
这样做会顺利,但由于这个变量必须在运行时更新,我试过了
#define _VAR Var_2_insert
insert_here[4] = { 0x00, 0x02, 0x03, _VAR};
Run Code Online (Sandbox Code Playgroud)
但是不起作用.那我怎么能这样呢?我希望我的问题很清楚.
谢谢.
我需要使一个数组像枚举一样工作,我可以在初始化期间更改数组中元素的索引位置.例如,我们可以有一个枚举
enum Fruit_t {
APPLES,
ORANGES,
STRAWBERRIES = 8 }
Run Code Online (Sandbox Code Playgroud)
这里,草莓而不是2,变成8.这可以在阵列中完成,而位置可以改变吗?这可能在C?如果有,请问怎么样?
任何其他可能的建议将不胜感激
让我解释我的意图
我正在使用一个函数指针数组
static BT (*data_access_typ [4])() =
{
NULL,
ARRAY,
STRUCT,
dnt_cr
};
Run Code Online (Sandbox Code Playgroud)
我需要调用这个函数
(access_data[*VAL])()
Run Code Online (Sandbox Code Playgroud)
其中*VAL可以是此枚举中的任何值
enum data_access_typ {
Null, array, struc, bool, bit_str, int32, unsin32, float_pt, oct_str=9, vis_str,
bcd=13, int8=15, int16, unsin8, unsin16, int64=20, unsin64, _enum, float32, float64,
date_tim, date, time, dnt_cr=225
};
Run Code Online (Sandbox Code Playgroud)
如果值为NULL,ARRAY,STRUCT,直到dnt_car(255),则要执行单独的函数,但我不需要所有类型.只需几个或5个功能.所以我真的不打算使用枚举(仍然试图弄清楚如何使它适用于我想做的事情).
我想要做的就是*VAL处的任何值都决定了在函数指针数组中调用哪个函数,其索引应该对应于所谓的枚举中的值.
例如,
(access_data[*VAL])()
从上面的代码中,只有当*VAL为3时它才会调用dnt_cr函数,但如果*VAL为225,我想要的是调用dnt_cr.
我希望这很清楚......
arrays ×2
c ×2
aes-gcm ×1
cryptography ×1
embedded ×1
encryption ×1
enums ×1
galois-field ×1
hash ×1
md5 ×1