Menda kakao ilovasi bor, bu ma'lumotlarning SHA1 xeshi bilan birga ba'zi ma'lumotlarni Rails ilovasiga yuboradi, bu ma'lumotlar va xesh mos kelishini tekshiradi, lekin ular yo'q.
Ishonch hosil qilish uchun men Rails va Kakao tomonida konsolga xeshlangan ma'lumotlarning olti burchakli versiyalarini qayd etganman va ular to'liq mos keladi.
Mana kakao qismi:
#import <CommonCrypto/CommonDigest.h>
//...
- (NSData *)dataOfSHA1Hash
{
unsigned char hashBytes[CC_SHA1_DIGEST_LENGTH];
CC_SHA1([self bytes], CC_SHA1_DIGEST_LENGTH, hashBytes);
return [NSData dataWithBytes:hashBytes length:CC_SHA1_DIGEST_LENGTH];
}
//...
NSData *signatureData = [signedData dataOfSHA1Hash];
NSString *signature = [signatureData hexadecimalString];
..va relslar:
Digest::SHA1.hexdigest(signed_data)
E'tibor bering, -hexadecimalString men sinab ko'rgan NSData uchun maxsus kengaytmadir (ichiga o'rnatilmaganga o'xshaydi). Bu usul muammo emasga o'xshaydi.
Xo'sh, nega mening SHA1 xeshlari bir xil ma'lumotlarga mos kelmaydi? Har qanday fikr bormi?
Tahrirlash: misol
“Salom dunyo!” qatori uchun.
Cocoa: f98ee9c814c2f3c66ccdca641298d12cd26741ec Rails: 2ef7bde608ce5404e97d5f042f95f89f1c232871
Kakao:
NSMutableData *signedData = [[NSMutableData alloc] init];
[signedData appendData:[@"Hello World!" dataUsingEncoding:NSUTF8StringEncoding]];
NSData *signatureData = [signedData dataOfSHA1Hash];
[signedData release];
NSString *signature = [signatureData hexadecimalString];
NSLog(@"Signature: %@", signature);
// output: Signature: f98ee9c814c2f3c66ccdca641298d12cd26741ec
Ruby:
>> Digest::SHA1.hexdigest("Hello World!")
=> "2ef7bde608ce5404e97d5f042f95f89f1c232871"
Serverda YUI bilan Node.js. Ushbu videoni ko'ring: http://www.yuiblog.com/blog/2010/09/29/video-glass-node/
Ushbu videodagi yigit Dav Glass Digg-dan sahifani olish uchun tugundan qanday foydalanishiga misol ko'rsatadi. Keyin u YUI-ni qo'lga kiritgan DOM-ga biriktirdi va uni butunlay boshqara oladi.
- person glenc   schedule 28.01.2011CC_SHA1
ga birinchi argument uchun ma'lumotlar ko'rsatgichidan foydalanardim. Men[data bytes]
dan foydalanishim kerak edi. Buni tushunish uchun juda uzoq vaqt kerak bo'ldi. - person Ben Scheirman   schedule 06.03.2012