Java和Objective-c中的SHA1输出在一个循环中变化
当我多次调用摘要方法(java)和CC_SHA1(Objective-c)时,我碰巧得到了不同的输出 请注意,当不使用循环时,我会得到匹配的输出 以下是我目前使用的实现 目标C代码段Java和Objective-c中的SHA1输出在一个循环中变化,java,objective-c,encryption,tripledes,Java,Objective C,Encryption,Tripledes,当我多次调用摘要方法(java)和CC_SHA1(Objective-c)时,我碰巧得到了不同的输出 请注意,当不使用循环时,我会得到匹配的输出 以下是我目前使用的实现 目标C代码段 NSString *haha= [NSString stringWithFormat:@"%@%@",sPassPhrase,sSaltValue]; NSData *abKey0 = [haha dataUsingEncoding:NSASCIIStringEncoding]; NSMutableData *ab
NSString *haha= [NSString stringWithFormat:@"%@%@",sPassPhrase,sSaltValue];
NSData *abKey0 = [haha dataUsingEncoding:NSASCIIStringEncoding];
NSMutableData *abKey = [NSMutableData dataWithData:abKey0];
unsigned char digest[20];
for(int i=1;i<iIterations;i++)
{
CC_SHA1(abKey.bytes, abKey.length, digest);
abKey = [NSMutableData dataWithBytes:digest length:20];
}
NSString*haha=[NSString stringWithFormat:@“%@%@”,SPASSPHASE,sSaltValue];
NSData*abKey0=[haha dataUsingEncoding:NSASCIIStringEncoding];
NSMutableData*abKey=[NSMutableData dataWithData:abKey0];
无符号字符摘要[20];
对于(int i=1;i一个明显的区别是,在objective C中进行的迭代比在Java中进行的迭代要少。请看“呵呵……这是一个很好的发现!谢谢你的回答。正如你所指出的,情况正是如此。为了不让自己再感到尴尬,我接受你的回答。@Leena:不必尴尬我们都去过那里,很多次了。
String haha = sPassPhrase + sSaltValue;
byte[] abKey = haha.getBytes("US-ASCII");
MessageDigest oSHA1 = MessageDigest.getInstance("SHA-1");
for (int i = 1; i <= iIterations; i++)
{
abKey = oSHA1.digest(abKey);
}