Android HMAC-SHA1与标准Java HMAC-SHA1不同

Android HMAC-SHA1与标准Java HMAC-SHA1不同,第1张

概述我在 android上遇到了一些HMAC的问题.我正在使用SHA1算法,以下代码在搜索android hmac-sha1时显示在整个网络上. String base_string = "This is a test string"; String key = "testKey"; try { Mac mac = Mac.getInstance @H_404_0@我在 android上遇到了一些HMAC的问题.我正在使用SHA1算法,以下代码在搜索androID hmac-sha1时显示在整个网络上.
String base_string = "This is a test string";        String key = "testKey";        try {            Mac mac = Mac.getInstance("HmacSHA1");            SecretKeySpec secret = new SecretKeySpec(key.getBytes("UTF-8"),mac.getAlgorithm());            mac.init(secret);            byte[] digest = mac.doFinal(base_string.getBytes());            String enc = new String(digest);            // Base 64 Encode the results            String retVal = Base64.encodeBase64String(enc.getBytes());            Log.v(TAG,"String: " + base_string);            Log.v(TAG,"key: " + key);            Log.v(TAG,"result: " + retVal);        } catch (Exception e) {            System.out.println(e.getMessage());        }

为了测试这段代码我用它创建了一个简单的标准Java程序(当然用System.out.println调用替换Log.v调用)所以我可以比较androID版本.在这两个实例中,我对base_string和key使用相同的测试值.

此外,我已经使用一些PHP函数和验证服务器(使用一些OAuth令牌)验证了标准Java的编码结果.代码在标准Java程序中运行良好,但它在AndroID程序中不起作用.我做了很多搜索,无法弄清楚出了什么问题.有没有人经历过这个?

以下是标准java和androID的结果……

> Java(和PHP):fH / pz0J5XcPZH / d608zGSn7FKA =
> AndroID程序:fH /vv73vv709Ce / vXcPZH / vv73vv71PMxkp77 9FO / vQ ==

进一步研究一下,我确信它是hmac函数,而不是Base64编码,因为比较那些hmac值,AndroID版本有各种额外的空格和其他未知字符符号与Java程序相混淆.

任何帮助表示赞赏!

解决方法 我想这是一个字符串编码问题.

你在这里做什么?

String enc = new String(digest);        // Base 64 Encode the results        String retVal = Base64.encodeBase64String(enc.getBytes());

你转换字符串中的字节,然后再返回一个字节数组(然后你base-64编码).

相反,这样做:

String retVal = Base64.encodeBase64String(digest);

通常,如果您想要一个可移植的程序,永远不要使用String.getBytes()或new String(byte []).并且永远不要尝试将任意字节数组(之前不是字符串)转换为字符串(除了像Base64之类的东西).

总结

以上是内存溢出为你收集整理的Android HMAC-SHA1与标准Java HMAC-SHA1不同全部内容,希望文章能够帮你解决Android HMAC-SHA1与标准Java HMAC-SHA1不同所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1134366.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存