C++安全方向(三):3.5 SHA-1 算法分析和代码演示

本文深入分析了SHA-1安全散列算法,介绍了其作为消息摘要的特性,生成160比特散列值的过程。尽管SHA-1已被证明存在碰撞漏洞,但它仍从MD4派生而来。文中通过代码示例展示了如何在C++中实现SHA-1算法。
摘要由CSDN通过智能技术生成

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值