java HmacSHA1哈希与swift(IOS)不匹配

java HmacSHA1哈希与swift(IOS)不匹配,java,swift,Java,Swift,Java版本: 公共静态字节[]计算签名(字符串算法,字节[]数据,字节[]共享加密){ 试一试{ SecretKey SecretKey=新SecretKeySpec(sharedSecret,算法); Mac Mac=Mac.getInstance(算法); mac.init(secretKey); 返回Base64.encode(mac.doFinal(数据)); }捕获(无算法异常){ // }捕获(InvalidKeyException e){ // } } Swift版本: fu

Java版本:

公共静态字节[]计算签名(字符串算法,字节[]数据,字节[]共享加密){
试一试{
SecretKey SecretKey=新SecretKeySpec(sharedSecret,算法);
Mac Mac=Mac.getInstance(算法);
mac.init(secretKey);
返回Base64.encode(mac.doFinal(数据));
}捕获(无算法异常){
// 
}捕获(InvalidKeyException e){
//
}
}
Swift版本:

func-hmac(键:String)->String{
让inputData:NSData=self.dataUsingEncoding(NSUTF8StringEncoding,allowLossyConversion:false)!
让keyData:NSData=key.dataUsingEncoding(NSUTF8StringEncoding,allowossyconversion:false)!
let algorithm=HMACAlgorithm.SHA1
设digestLen=CC\u SHA1\u DIGEST\u长度
let result=unsafemeutablepointer.alloc(digestLen)
CCHmac(CCHmacAlgorithm(kCCHmacAlgSHA1),keyData.bytes,keyData.length,inputData.bytes,inputData.length,result)
let data=NSData(字节:结果,长度:digestLen)
结果.销毁()
返回数据.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.Encoding64CharacterLineLength)
}

下面是使用CryptoJs的javascript版本,它生成与java代码相同的hmacsha1哈希:

我必须对
hmac()
方法进行一些小的更改,使其在Xcode 6.3中编译,但随后
“Message”.hmac(“秘密密码短语”)
产生与JavaScript小提琴完全相同的结果。你们得到了什么结果?@MartinR,我在消息中有不需要的空格,因此得到了不同的散列,我验证了这段代码工作得很好。非常感谢您的查找和确认!顺便说一句,你太棒了!请将解决方案作为答案发布,稍后接受。@user1803551,不确定我该怎么做。您可以像回答其他问题一样回答自己的问题。然后,您需要等待48小时,直到您可以接受它。