Objective C(CCHmac)とPHP(hash_hmac)からHMAC認証を実装しようとしています。別のハッシュ結果が得られました。誰かが私を助けることができますか?別のハッシュ結果を取得する理由がわかりませんか?以下は参考のために私のコード(Objective-c&PHP)です。お願いします!
PHP:
$APIConsumerSecret ="DcmzvkQC7Sno+lxnbDG0hTtZ0WTQn9T2T9DJxEmcB0";
$APIConsumerSecret = urlencode($APIConsumerSecret).'&';
$BaseString="GET&http%3A%2F%2Fboday.api.simppo.com%2Foauth%2Frequest_token&oauth_consumer_key%3DCN6W1I8E2CEWZJNQI2KA7KY3%26oauth_nonce%3DlxTSJL%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1357268295%26oauth_version%3D1.0";
echo base64_encode(hash_hmac('sha1',$BaseString,$APIConsumerSecret,true));
PHPの結果:xJ5Ya4u4ghH4ugIieGIb9AcFpD0=
Objective-C
- (NSString*)flickr_oauthSignatureFor:(NSString*)dataString withKey:(NSString*)secret
{
NSData* secretData = [secret dataUsingEncoding:NSUTF8StringEncoding];
NSData* stringData = [dataString dataUsingEncoding:NSUTF8StringEncoding];
const void* keyBytes = [secretData bytes];
const void* dataBytes = [stringData bytes];
///#define CC_SHA1_DIGEST_LENGTH 20 /* digest length in bytes */
void* outs = malloc(CC_SHA1_DIGEST_LENGTH);
CCHmac(kCCHmacAlgSHA1, keyBytes, [secretData length], dataBytes, [stringData length], outs);
// Soluion 1
NSData* signatureData = [NSData dataWithBytesNoCopy:outs length:CC_SHA1_DIGEST_LENGTH freeWhenDone:YES];
NSLog(@"D1-0: signatureData %@", signatureData );
NSLog(@"base64:%@", [signatureData base64EncodedString] );
return [signatureData base64EncodedString];
}
Objective-Cの結果:
D1-0: <59052771 e670a04b 3a2e87db 3d7965be 1aed112e>
base64: WQUnceZwoEs6LofbPXllvhrtES4=