C#实现php的hash_hmac函数

from:http://blog.csdn.net/ciaos/article/details/12618487

PHP代码示例如下

<?php

$res1 = hash_hmac("sha1","signatureString", "secret");
        echo $res1."\n";
        //ee1b654aa861c41fd5813dc365ef106c9801f8f6
        echo base64_encode($res1)."\n";
        //ZWUxYjY1NGFhODYxYzQxZmQ1ODEzZGMzNjVlZjEwNmM5ODAxZjhmNg==

$res2 = hash_hmac("sha1","signatureString", "secret", true);
        //echo "$res2\n";//binary byte[]
        $data = unpack(‘C*‘, $res2);
        print_r($data);
        /*
        Array
        (
            [1] => 238
            [2] => 27
            [3] => 101
            [4] => 74
            [5] => 168
            [6] => 97
            [7] => 196
            [8] => 31
            [9] => 213
            [10] => 129
            [11] => 61
            [12] => 195
            [13] => 101
            [14] => 239
            [15] => 16
            [16] => 108
            [17] => 152
            [18] => 1
            [19] => 248
            [20] => 246
        )

*/

echo base64_encode("$res2\n");
        //7htlSqhhxB/VgT3DZe8QbJgB+PYK
?>

C#代码示例如下

using System;

using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;

namespace ConsoleApplication1
{
    class Program
    {
        private Object hash_hmac(string signatureString, string secretKey, bool raw_output = false)
        {
            var enc = Encoding.UTF8;
            HMACSHA1 hmac = new HMACSHA1(enc.GetBytes(secretKey));
            hmac.Initialize();

byte[] buffer = enc.GetBytes(signatureString);
            if (raw_output)
            {
                return hmac.ComputeHash(buffer);
            }
            else
            {
                return BitConverter.ToString(hmac.ComputeHash(buffer)).Replace("-", "").ToLower();
            }
        }

static void Main(string[] args)
        {
            Program p = new Program();
            String res1 = (String)p.hash_hmac("signatureString", "secret");
            Console.WriteLine(res1);
            //ee1b654aa861c41fd5813dc365ef106c9801f8f6
            Console.WriteLine(Convert.ToBase64String(Encoding.UTF8.GetBytes(res1)));
            //ZWUxYjY1NGFhODYxYzQxZmQ1ODEzZGMzNjVlZjEwNmM5ODAxZjhmNg==

byte[] ret = (byte[])p.hash_hmac("signatureString", "secret", true);
            for (int i = 0; i < ret.Length; i++) {
                Console.Write(ret[i] + " ");
            }
            //238 27 101 74 168 97 196 31 213 129 61 195 101 239 16 108 152 1 248 246
            Console.WriteLine();

Console.WriteLine(Convert.ToBase64String(ret));
            //7htlSqhhxB/VgT3DZe8QbJgB+PY=
        }
    }
}

时间: 2024-10-09 07:14:28

C#实现php的hash_hmac函数的相关文章

PHP内置函数大全

1 php内置函数大全 2 第2章 Apache函数 15 3 2.1 Apache信息获取类函数 15 4 2.1.1 apache_child_terminate函数:在本次请求结束后终止Apache进程 15 5 2.1.2 apache_get_modules函数:获取Apache的模块列表 16 6 2.1.3 apache_get_version函数:获取Apache的版本 16 7 2.1.4 apache_getenv函数:获取Apache的环境变量 17 8 2.1.5 apa

HMAC-SHA签名流程

以腾讯上传用户在应用中的等级相关信息为例.接口详情在此["http://wiki.open.qq.com/wiki/v3/user/get_info"] 在set_achievement这个接口中,接口参数包括openid, openkey, appid, pf, sig, user_attr, format 此接口最后的请求示例为 http://openapi.tencentyun.com/v3/user/set_achievement? openid=B624064BA065E01

看我如何接入腾讯API,以及生成sig签名~\(≧▽≦)/~

以腾讯上传用户在应用中的等级相关信息为例.接口详情在此["http://wiki.open.qq.com/wiki/v3/user/get_info"] 在set_achievement这个接口中,接口参数包括openid, openkey, appid, pf, sig, user_attr, format 此接口最后的请求示例为 http://openapi.tencentyun.com/v3/user/set_achievement? openid=B624064BA065E01

编程语言如何置入天气预报接口api

天气预报预报接口在网页中应用的多,一般在discuz网站打开后台可以添加,然而编程语言如何实现呢? 可以申请到SmartWeatherAPI天气预报接口的使用权限,开始着手我的实时天气预报系统的开发,主要开发的版本使用的是Python脚本,成果将于近期以系列文章与大家见面.今天在这里我和大家探讨一下SmartWeatherAPI中key的计算方法,并提供C++程序源码供大家参考. SmartWeatherAPI(简称"SWA接口")是中国气象局面向网络媒体.手机厂商.第三方气象服务机构

AUTH 用户管理操作

AUTH的实现是用抽象类来实现的,一个类,对应多种不同的验证方式. 先来介绍一个抽象类,很有借鉴意义: 实现一个猴子类,狗类,以及后面可其他类. 通常可以用抽象类和接口实现: 但是我们不直接定义具体的类,我们把所有猴子类,狗类的特征放在不同的config里面,同过抽象类方法来 初始话一个对象. config.php 1 <?php 2 return array( 3 'driver'=>'monkey',//调用那个类. 4 'index'=>'Ani',//其他. 5 ); confi

PHP API接口签名验证

hash_hmac 在php中hash_hmac函数就能将HMAC和一部分哈希加密算法相结合起来实现HMAC-SHA1  HMAC-SHA256 HMAC-MD5等等算法.函数介绍如下: string hash_hmac(string $algo, string $data, string $key, bool $raw_output = false) algo:要使用的哈希算法名称,可以是上述提到的md5,sha1等 data:要进行哈希运算的消息,也就是需要加密的明文. key:使用HMAC

hash_hmac

近期做了一个项目有用到 hmac 算法 当然php 有现成的函数了 hash_hmac() 但是在IOS端怎么也获取不到对应的值 现在记录一下 hash_hmac(加密算法,秘钥,加密数据,HEX or BUFFER) 这里我们实现的是 HMac_SHA1 算法 1 <?php 2  $hash = hash_hmac ('sha1',$key,$data,false); 3  echo $hash; 4   5 ?> IOS 端 查阅的资料基本都是基于NSDATA 或者 Hmac_sha1

May 18:PHP 函数

a 函数    说明 abs    绝对值acos    反余弦acosh    反双曲余弦addcslashes    以 C 语言风格使用反斜线转义字符串中的字符addslashes    使用反斜线引用字符串apache_child_terminate    在本次请求结束后终止 apache 子进程apache_getenv    获取 Apache subprocess_env 变量apache_get_modules    获得已加载的Apache模块列表apache_get_ver

js高阶函数

map()方法定义在JavaScript的Array中,我们调用Array的map()方法,传入我们自己的函数,就得到了一个新的Array作为结果: function pow(x) { return x * x; } var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; arr.map(pow); // [1, 4, 9, 16, 25, 36, 49, 64, 81] reduce()把一个函数作用在这个Array的[x1, x2, x3...]上,这个函数必须接收两个