我需要在Objective C中生成HMAC-SHA1.但是我找不到任何有用的东西.我尝试使用CCHMAC使用CommonCrypto,但没有用.我需要生成一个hmac并在生成HOTP号后.
有人在Objective C或C中有任何示例代码吗?
我正在寻找一个相当于这个php调用的java:
hash_hmac('sha1', "test", "secret")
Run Code Online (Sandbox Code Playgroud)
我试过这个,使用java.crypto.Mac,但两人不同意:
String mykey = "secret";
String test = "test";
try {
Mac mac = Mac.getInstance("HmacSHA1");
SecretKeySpec secret = new SecretKeySpec(mykey.getBytes(),"HmacSHA1");
mac.init(secret);
byte[] digest = mac.doFinal(test.getBytes());
String enc = new String(digest);
System.out.println(enc);
} catch (Exception e) {
System.out.println(e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
key ="secret"和test ="test"的输出似乎不匹配.
使用Google + Bing并没有给出一个简单问题的答案:
你应该如何在Ruby中使用HMAC模块来创建一个带MD5的HMAC(使用秘密)?
HMAC文档似乎非常薄.
谢谢!
"abc"的sha1哈希是
a9993e364706816aba3e25717850c26c9cd0d89d
Run Code Online (Sandbox Code Playgroud)
让Mathematica告诉你它的Hash功能的唯一方法是
Hash[abc, "SHA"] // IntegerString[#, 16]&
Run Code Online (Sandbox Code Playgroud)
(IntegerString就像大多数实现一样以十六进制输出它.)
注意
Hash["abc", "SHA"]
Run Code Online (Sandbox Code Playgroud)
给出了"\"abc \""的哈希 - 不是你想要的!事实上,我们获得正确的"abc"哈希的唯一原因是因为符号的Mathematica表示abc恰好是字符串"abc".对于绝大多数字符串,情况并非如此.
那么如何在Mathematica中获取任意字符串的哈希值呢?