ruby-on-rails – SHA1哈希与Rails和Cocoa应用程序之间不匹配
发布时间:2020-12-16 20:13:12 所属栏目:百科 来源:网络整理
导读:我有一个 Cocoa应用程序发送一些数据,以及该数据的SHA1哈希值到Rails应用程序,该应用程序验证数据和哈希匹配,但是它们没有. 确保我已经将Rash和Cocoa两侧的哈希数据的十六进制版本记录到控制台,并且它们完全匹配. 以下是可可部分: #import CommonCrypto/Com
我有一个
Cocoa应用程序发送一些数据,以及该数据的SHA1哈希值到Rails应用程序,该应用程序验证数据和哈希匹配,但是它们没有.
确保我已经将Rash和Cocoa两侧的哈希数据的十六进制版本记录到控制台,并且它们完全匹配. 以下是可可部分: #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]; ..和Rails: Digest::SHA1.hexdigest(signed_data) 请注意,-hexadecimalString是NSData的自定义扩展(似乎没有内置),我已经测试过.该方法似乎不是问题. 那么,为什么我的SHA1哈希算不上相同的数据呢?有任何想法吗? 编辑:示例 对于字符串“Hello World!” Cocoa: f98ee9c814c2f3c66ccdca641298d12cd26741ec Rails: 2ef7bde608ce5404e97d5f042f95f89f1c232871 可可: 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 红宝石: >> Digest::SHA1.hexdigest("Hello World!") => "2ef7bde608ce5404e97d5f042f95f89f1c232871" 解决方法
发现错误,愚蠢的小东西:
-CC_SHA1([self bytes],hashBytes); +CC_SHA1([self bytes],[self length],hashBytes); 我发送摘要的长度,而不是数据的长度.不知道我怎么能犯这样的错误 – 然后忽略它几个小时. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 21 分钟学 apollo-client 系列:apollo store 存储细节
- orcl regexp_like 的用法
- EasyUI form ajax submit后,在IE下提示下载内容的解决办法
- ruby-on-rails – 如何在Rails应用程序中集成Facebook评论?
- ruby-on-rails – 如何从rails中的URL获取ID
- DTD总结
- c# – 任务MaxDegreeOfParallelism可以每次从我的列表中获取
- cocos2dx 3.x中的OpenGL(三)-BATCH_COMMAND
- ajax gson json 接取对象
- Using SQLite in C++ with Code::blocks