zoukankan      html  css  js  c++  java
  • 2018-2-13-win10-UWP-Hmac

    title author date CreateTime categories
    win10 UWP Hmac
    lindexi
    2018-2-13 17:23:3 +0800
    2018-2-13 17:23:3 +0800
    Win10 UWP

    HMAC是密钥相关的哈希运算消息认证码,输入密钥和信息。

    在uwp,Hmac在很多网络使用,我最近写qiniu SDK,把原来C#改为UWP,需要使用HMAC。

    上传文件时需要填写 form ,这是官方要求的

    <form method="post" action="http://upload.qiniu.com/"
     enctype="multipart/form-data">
      <input name="key" type="hidden" value="<resource_key>">
      <input name="x:<custom_name>" type="hidden" value="<custom_value>">
      <input name="token" type="hidden" value="<upload_token>">
      <input name="file" type="file" />
      <input name="crc32" type="hidden" />
      <input name="accept" type="hidden" />
    </form>

    里面需要凭据,凭据有上传策略,而做这个需要 Hmac,我找了好久才得到,希望大家遇到 Hmac 问题可以在我这里发现解决方法

                string str_alg_name = MacAlgorithmNames.HmacSha1;
                MacAlgorithmProvider obj_mac_prov = MacAlgorithmProvider.OpenAlgorithm(str_alg_name);
                IBuffer buff_msg = CryptographicBuffer.CreateFromByteArray(path_and_query_bytes);
                IBuffer buff_key_material = CryptographicBuffer.CreateFromByteArray(mac.SecretKey);
                CryptographicKey hmac_key = obj_mac_prov.CreateKey(buff_key_material);
                IBuffer hmac = CryptographicEngine.Sign(hmac_key, buff_msg);
                byte[] digest = hmac.ToArray();

    string str_alg_name = MacAlgorithmNames.HmacSha1;是从预设的算法中拿出Hmac,而微软有这么多算法:AesCmac、HmacMd5、HmacSha1、HmacSha256、HmacSha384、HmacSha512

    MacAlgorithmProvider.OpenAlgorithm 传入使用算法

    Hmac 输入是 buffer,如果我们只有 byte 请使用 CryptographicBuffer.CreateFromByteArray 转Buffer

    Hmac密钥 obj_mac_prov.CreateKey(buff_key_material)

    最后使用 CryptographicEngine.Sign(hmac_key, buff_msg);

  • 相关阅读:
    php的序列化和反序列化有什么好处?
    解析PHP多种序列化与反序列化的方法
    PHP 数组和字符串互相转换实现方法
    PHP中foreach()用法汇总
    php实现伪静态的方法
    PHP中如何定义类及其成员属性与操作
    单例模式优缺点
    PHP 单例模式解析和实战
    主从复制之莫名少表
    诡异的 ERROR 1045 (28000): Access denied for user 错误
  • 原文地址:https://www.cnblogs.com/lindexi/p/12085652.html
Copyright © 2011-2022 走看看