hmacsha1 php java_HMAC-SHA1算法 php怎么写?

java:

1、用hashmap存储元素,键值对方式。

Map hashMap = new HashMap(){

{

put("appid", "123");

put("apikey", "456");

put("secretKey", "789");

put("timestamp", "当前UNIX 时间戳,秒数,java中获取");

}

};

2、java中可以通过Timestamp获得UNIX 时间戳。

3、然后对hashmap进行升序排序。

4、然后写一个方法遍历hashmap,拼接成字符串格式为apikey=456&appid=123&secretkey=789×tamp=1389379498

然后对该字符串进行encoded编码,输出格式为apikey=456&appid=123&secretkey=789×tamp=1389379498

5、通过java中HMAC-SHA1算法加密该字符串,$secretKey为安全密钥。

6、再通过base64_encode加密第5步产生的字符串。这是最终sig结果。

java易混淆概念之类变量、实例变量、局部变量

类变量、实例变量、局部变量类变量是类中独立于方法之外的变量,用static 修饰。

实例变量也是类中独立于方法之外的变量,不过没有static修饰。

局部变量是类的方法中的变量。

看下面的伪代码说明:

public class Variable{

static int allClicks=0; //类变量

String str="hello world"; //实例变量

public void method(){

int i =0; //局部变量

}

}

实例变量也称为:“域”,“成员变量”,在实体类或数据类中被称为“属性”或“字段”。当实例变量可以改变时,被称为对象的状态。

2. final用于常量的声明,规范要求常量的变量名是大写的。

3. statci 在java 里面用于对类方法和属性进行修饰,其作用是什么呢?

有两种情况是non-static无法做到的,这时你就要使用statice。

第一种:你希望不论产生了多少个对象,或不存在任何对象的情形下,那些特定数据的存储空间都只有一份;

第二种:你希望某个函数不要和class object绑在一起。即使没有产生任何object,外界还是可以调用其static函数,或是取用其static data

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

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

php代码没几行,信息量很大,翻译成java代码行数量比较大。仅提供思路和php代码解释。

---------------

$appid = "123"; //数组里面的值,id。

$apikey = "456"; //数组里面的值,为加密密钥。

$secretKey ="789"; //数组里面的值,安全密钥。

$timestamp = time(); 数组里面的值,获得当前时间。

//UNIX 时间戳(timestamp)是 PHP 中关于时间日期一个很重要的概念,它表示从 1970年1月1日 00:00:00 到当前时间的秒数之和。

//echo输出$timestamp变量值,例如输出了1389379960

echo $timestamp;

//定义数组。以键值对方式存储。

//'appid' 'apikey' 'secretkey' 'timestamp'是key,键。

//$appid $apikey, $secretKey $timestamp是value,值。

$params = array('appid'=>$appid, 'apikey'=>$apikey, 'secretkey'=>$secretKey, 'timestamp'=>$timestamp);

//对数组键值进行升序排序。排序结果为apikey appid secretkey timestamp

ksort($params);

//拼接数组中的参数,并且用encoded编码。

//http_build_query -- 生成 url-encoded 之后的请求字符串。当数组没有写下标时,就会用第二个参数结合当前默认下标当前缀。

//$param_uri变量值,结果为apikey=456&appid=123&secretkey=789×tamp=1389379498

$param_uri = http_build_query($params,'','&');

echo $param_uri; //echo输出结果为apikey=456&appid=123&secretkey=789×tamp=1389379498

//先使用调用hash_hmac方法加密,HMAC-SHA1算法。

//$secretKey为安全密钥,$param_uri为要加密的明文。'sha1'是HMAC-SHA1算法。

//再调用base64_encode方法加密,base64_encode 使用 MIME base64 对数据进行编码。

$sig = base64_encode(hash_hmac('sha1', $param_uri, $secretKey));

?>

java:

1、用hashmap存储元素,键值对方式。

Map hashMap = new HashMap(){

{

put("appid", "123");

put("apikey", "456");

put("secretKey", "789");

put("timestamp", "当前UNIX 时间戳,秒数,java中获取");

}

};

2、java中可以通过Timestamp获得UNIX 时间戳。

3、然后对hashmap进行升序排序。

4、然后写一个方法遍历hashmap,拼接成字符串格式为apikey=456&appid=123&secretkey=789×tamp=1389379498

然后对该字符串进行encoded编码,输出格式为apikey=456&appid=123&secretkey=789×tamp=1389379498

5、通过java中HMAC-SHA1算法加密该字符串,$secretKey为安全密钥。

6、再通过base64_encode加密第5步产生的字符串。这是最终sig结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值