当前位置:   article > 正文

鸿蒙源码分析(三十八)_mbedtls_sha512_ret

mbedtls_sha512_ret


单向散列函数hash

hash函数是一种常见的单向不可逆加密函数,本篇主要分析hks_mbedtls_hash.c代码
文件路径(security_huks\frameworks\huks_standard\main\crypto_engine\mbedtls\src\hks_mbedtls_hash.c)

一、背景知识介绍

1.哈希

将数据打乱混合,通过散列算法,重新创建一个叫做散列值的指纹,通常用一个短的随机字母和数字组成的字符串表示散列值。

2.哈希算法特点

2.1 单向不可逆性

哈希(Hash)算法是一种单向密码体制,即只有加密过程,没有解密过程。

2.2 可重复性

相同输入经过同一哈希函数得到相同散列值,但并非散列值相同则输入结果相同。

哈希函数是一种无需密钥对的加密方式
无需借助任何秘钥,主要用于针对对称和非对称加密过程中需要保护的部分提供完整性、防伪造的支持。
常见的哈希函数有:MD5,SHA-1,SHA-2(SHA256\SHA384\SHA512),SHA-X(系列)

二、代码分析

文件中主要就一个函数实现hash过程。该函数将长度不固定的消息(message)作为输入参数,运行特定的Hash函数,生成固定长度的输出,这个输出就是Hash,也称为这个消息的消息摘要(Message Digest)算法。
参数详解:

  • alg:对应的hash算法名
  • msg:传入用来加密参与hash运算的消息
  • hash:用来存放输出信息
//单项散列函数/也叫消息摘要算法
int32_t HksMbedtlsHash(uint32_t alg, const struct HksBlob *msg, struct HksBlob *hash)
{
    int32_t ret;
    switch (alg) {
        case HKS_DIGEST_SHA256:
            ret = mbedtls_sha256_ret(msg->data, msg->size, hash->data, 0); /* 0 for SHA-256 */
            break;
        case HKS_DIGEST_SHA384:
            ret = mbedtls_sha512_ret(msg->data, msg->size, hash->data, 1); /* 1 for SHA-384 */
            break;
        case HKS_DIGEST_SHA512:
            ret = mbedtls_sha512_ret(msg->data, msg->size, hash->data, 0); /* 0 for SHA-512 */
            break;
        //针对不同算法对msg结构体的data域进行初始化,不同算法对应不同初始化内容
        default:
            return HKS_ERROR_INVALID_DIGEST;
    }

    if (ret != HKS_MBEDTLS_SUCCESS) {
        HKS_LOG_E("Mbedtls hash failed! mbedtls ret = 0x%X", ret);
    //判断初始化是否成功
        return ret;
    }

    ret = HksGetDigestLen(alg, &(hash->size));
    //将alg对应算法的长度写进hash->size
    if (ret != HKS_SUCCESS) {
        HKS_LOG_E("Get digest len failed!");
    }

    return ret;//返回成功值0
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

总结

以上就是hash单向散列函数的介绍,以及代码中的实现。感谢阅读和点赞

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/325007
推荐阅读
相关标签
  

闽ICP备14008679号