SHA-1算法分析和代码演示
·安全散列算法(source hash Algorithm)
·消息摘要(message digest)
·产生160比特(20字节)散列值H0 H1 H2 H3 H4
·强抗碰撞已经攻破,在2005年由王小云公婆
·和md5一样都是由md4导出
注意:sshA-1的输出与md5相比,只是多了一个变量。
由上图可知,就是两个两个节点生成一个哈希值,依此类推推算出一个根结点,根结点验证之后,就可以验证整块内容。
代码如下:
//文件可信树hash值
string GetFileMarketHash(string filepath)
{
string hash;
//存放hash叶子节点,后面所有的结果都存入其中
vector<string> hashs;
ifstream ifs(filepath, ios::binary);
if (!ifs)
return hash;
unsigned char buf[1024] = { 0 };
unsigned char out[1024] = { 0;
int block_size = 128;
while (!ifs.eof())
{
ifs.read((char *)buf,block_size);
int read_size = ifs.gcount();
if (read_size <= 0)
br