AES 暗号化に関連する問題があります。問題は、初期化ベクトル、ソルト、RFC2898 反復を使用した AES 暗号化技術を使用して文字列を暗号化し、sha1 アルゴリズムを使用してキーを生成する必要があることです。
このコードを使用しました
+(NSString *)stringToSha1:(NSString *)str{
const char *s = [str cStringUsingEncoding:NSASCIIStringEncoding];
NSData *keyData = [NSData dataWithBytes:s length:strlen(s)];
// This is the destination
uint8_t digest[CC_SHA1_DIGEST_LENGTH] = {0};
// This one function does an unkeyed SHA1 hash of your hash data
CC_SHA1(keyData.bytes, keyData.length, digest);
// Now convert to NSData structure to make it usable again
NSData *out = [NSData dataWithBytes:digest length:CC_SHA1_DIGEST_LENGTH];
// description converts to hex but puts <> around it and spaces every 4 bytes
NSString *hash = [out description];
hash = [hash stringByReplacingOccurrencesOfString:@" " withString:@""];
hash = [hash stringByReplacingOccurrencesOfString:@"<" withString:@""];
hash = [hash stringByReplacingOccurrencesOfString:@">" withString:@""];
NSLog(@"Hash is %@ for string %@", hash, str);
return hash;
}
sha1 キー生成の場合、この手法は .net と Android で行うため、まったく異なる生成が行われます。
Androidと.netにはすでにこれを行うためのクラスとライブラリがあり、iPhoneでそれを行う方法をそのままにしておきました。