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);

最新文章

  1. VS 自动添加注释
  2. 利用matlab摄像机标定
  3. 不用画线 设置UITableView的全屏分隔线
  4. git tag的使用
  5. iOS常见的几种延时执行的方法
  6. 14.4.2 Change Buffer 延迟写
  7. 你怎么知道你的网站K
  8. python循环
  9. .NET Core微服务之基于Polly+AspectCore实现熔断与降级机制
  10. 5Linux流程控制语句-if、for、while、case语句、计划任务
  11. mabatis insert into on duplicate key
  12. Hadoop+HBase 集群搭建
  13. ABAP-FTP-执行
  14. PAT 1026 程序运行时间
  15. Excel VBA语句集
  16. GET和POST两种基本请求方法的区别(转载)
  17. [Go] Http / Net 相关资料
  18. ajax请求,返回值为304 Not Modified 错误原因与解决办法
  19. J2EE开发之三种项目架构
  20. KMP 初级板子 待更新

热门文章

  1. Codeforces Breaking Good
  2. 批量授一种权限给用户程序 plm enovia
  3. redux 介绍及配合 react开发
  4. while 循环语句举例
  5. 虚拟机设置静态IP地址
  6. Java访问数组
  7. 使用egg.js和egg-sequelize连接mysql
  8. 什么是http协议(二)
  9. BioGRID 互作数据库
  10. Redis端口配置