java - Android HMAC显示意外错误

标签 java android hash md5 hmac

我试图使用md5生成HMAC,一切似乎都很完美,但是它显示了意外错误

代码如下

public String calcHmac(String src) throws Exception {

        String key = "PFhNTD48VUlEPlNYWUFOR0VUPC9VSUQ+PEVUUkFOQVVUSD48WFNQUk9MRT5BbGw8L1hTUFJPTEU+PFhTUFNlY3VyaXR5SUQ+MzMzPC9YU1BTZWN1cml0eUlEPjxYU1BTZWN1cml0eUlEPjk5NzwvWFNQU2VjdXJpdHlJRD48WFNQU2VjdXJpdHlJRD5HQjwvWFNQU2VjdXJpdHlJRD48WFNQU2VjdXJpdHlJRD5YMDM8L1hTUFNlY3VyaXR5SUQ+PFhTUFNlY3VyaXR5SUQ+WDAxPC9YU1BTZWN1cml0eUlEPjxYU1BSZWNpcGllbnQ+NDlBQ0NULVNZQU5HRVRSQU48L1hTUFJlY2lwaWVudD48L0VUUkFOQVVUSD48L1hNTD4=";
        SecretKeySpec keySpec = new SecretKeySpec(
                key.getBytes(),
                "HmacMD5");

        Mac mac = Mac.getInstance("HmacMD5");
        mac.init(keySpec);
        byte[] result = mac.doFinal(src.getBytes());
        return Hex.encodeHexString(result);   
    }

最佳答案

尝试这个

 public static String sStringToHMACMD5(String s, String keyString)
    {
        String sEncodedString = null;
        try
        {
            SecretKeySpec key = new SecretKeySpec((keyString).getBytes("UTF-8"), "HmacMD5");
            Mac mac = Mac.getInstance("HmacMD5");
            mac.init(key);

            byte[] bytes = mac.doFinal(s.getBytes("ASCII"));

            StringBuffer hash = new StringBuffer();

            for (int i=0; i<bytes.length; i++) {
                String hex = Integer.toHexString(0xFF &  bytes[i]);
                if (hex.length() == 1) {
                    hash.append('0');
                }
                hash.append(hex);
            }
            sEncodedString = hash.toString();
        }
        catch (UnsupportedEncodingException e) {}
        catch(InvalidKeyException e){}
        catch (NoSuchAlgorithmException e) {}
        return sEncodedString ;
    }


这一定会对您有所帮助。

谢谢

关于java - Android HMAC显示意外错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11539140/

相关文章:

android - 如何在 Android Studio 中将应用上传到设备上

android - 尝试从原始文件夹(VideoView)播放视频

javascript - window.location = #anchor 在 IE 中不起作用

java - 从不使总和为负的数据类型

java - 在内置模板规则中找不到名为 {NAME}METHOD() 的匹配 0 参数函数

java - 根据某些规则过滤集合的最佳方法

java - TestNG - 可用于单类/方法执行的测试/套件作用域变量

java - 向矩阵/二维数组添加新列

ruby-on-rails - 平均嵌入在 ruby​​ 哈希中的值

perl - 将散列传递给子例程