简介 目录 评价 推荐
  • 飞天MoMo 2018-07-05
    问答区没看到我想要的答案,实在不知道这里为什么要还原密钥。
    5回答·1385浏览
  • cc2424 2017-07-01
    遇到了问题,请大神解答

    可能是转义的时候出的问题

    因为我

    public static void bcHmacMD5() {

    HMac hmac = new HMac(new MD5Digest());

    hmac.init(new KeyParameter(org.bouncycastle.util.encoders.Hex.decode("")));

    hmac.update(src.getBytes(), 0, src.getBytes().length);


    // 执行摘要

    byte[] hmacMD5Bytes = new byte[hmac.getMacSize()];

    hmac.doFinal(hmacMD5Bytes, 0);


    System.out.println(" bc hmacMD5:" + org.bouncycastle.util.encoders.Hex.toHexString(hmacMD5Bytes));


    }

    得到的结果: bc hmacMD5:b87f98c51d1df76cfb5348c5619ad14f

    //img3.sycdn.imooc.com/59e355b70001dda208290557.jpg一样

    另外在测试这个页面的时候发现"aaaaaaaaaaaa"也可以作为密钥

    可能是为了防止报错,那个页面的算法为了解析密钥的时候还将密钥中的元素全部进行转义了一遍

    1回答·1652浏览
  • taoy 2017-06-15
    使用MAC时发现的问题:有些算法可以得到一致结果,有些则不同

    老师只是提供了你一种学习的思路,但是实际运用过程中,很多知识还是要自己去总结的

    1回答·1830浏览
  • 羽. 2017-04-10
    关于byte[]和string

    一个byte是八比特,new String时按照byte的值到字符表中找对应的字符来生成字符串。Hex.byteArrayToString是把一个byte变成两个十六进制的英文与数字组合,内容当然就不会一样。

    2回答·1363浏览
  • 逅会无期 2016-12-06
    秘钥长度可以随便输吗

    不一定是10个,key的元素个数是偶数就行。

    以下是CC的Hex.decodeHex()方法的文档注释:

    http://img.mukewang.com/58519a470001d75309490223.jpg

    BC报这个异常的原因应该类似。

    1回答·1493浏览
  • 繁华落尽&梦醒千年* 2016-02-25
    jdk 的hmacMD5操作同一字符串,,为什么在控制台输出的内容不同呢?
    4回答·1394浏览
  • zain_xu 2015-12-28
    为什么还要还原秘钥?

    还原密钥的说法是不是不准确啊?我觉得是这样的:

    在使用Secretkey是,可以用系统生成的密钥:

    KeyGenerator keyGen = KeyGenerator.getInstance("HmacMD5");//指定生成密钥所使用的算法

    SecretKey key = keyGen.generateKey();//生成一个密钥,这里生成的密钥是符合算法的标准规范的密钥。如果不想麻烦也可以把字符串当作的密钥,就像老师代码中的十个a。有了这个key就可以保证以下代码生成的密钥是准确无误的了。

    SecretKey mainKey = new SecretKeySpec(key.getEncoded(),"HmacMD5");//之前的key是生成mainKey的准备条件,而只有标准规范的key而不是指定的字符串可以更好生成符合标准要求的mainKey。

    有了这个mainKey,那么这就可以完成其它步骤了。

    3回答·1235浏览
  • Markey 2015-07-07
    关于视频中的代码
    已采纳 庄学爸 的回答

    KeyGenerator是生成指定算法密钥的密钥生成器,首先需要获取一个KeyGenerator实例,然后使用器generateKey()方法生成一个SecretKey实例,该实例是为了获取密钥,为了作为还原密钥操作时的参数.

    这两种方法都可以创建key,第一种是jdk初始化一个密钥对象.第二个是通过还原密钥操作,生成一个符合HmacMD5规则的密钥对象.而第一种方法生成的密钥是作为生成第二种密钥时的参数.

    4回答·1505浏览
数据加载中...
开始学习 免费