2011-12-14 1 views
4

Objective-cに2つのMD5ハッシュ値を追加しようとしています。Objective-cに2つのMD5ハッシュ値を追加する方法がわかりません

私はCommonCrypto/CommonDigest.hヘッダーファイルをインポートし、2つの文字列をCC_MD5関数を使用してMD5ハッシュに変換しました。

これら2つのハッシュ値の追加はどのようにして行いますか?

+14

MD5ハッシュ値を2つ追加すると、あなたはどういう意味ですか? –

+3

この記事をチェックしてください:http://stackoverflow.com/questions/2214259/combining-md5-hash-values – RaffAl

+0

理由と私たちが助けることができる理由を教えてください。私はoAuthが悪夢で、始まりに似ています –

答えて

1

リンク先の投稿には、MD5hash(part1 + part2)= MD5hash(part1)+ MD5hash(part2)というのはありません。 おそらくこの解決策を試してください:http://www.joel.lopes-da-silva.com/2010/09/07/compute-md5-or-sha-hash-of-large-file-efficiently-on-ios-and-mac-os-x/。私はそれをテストしていないが、コードはあなたのために動作するはずです。ファイルの後続部分をCC_MD5_Update(...)に送り、最後のハッシュを取得するには、CC_MD5_Final(...)を呼び出します。大規模なファイルを処理できる唯一の方法は、おそらくそれが目的です。

私は何かが欠けている場合は申し訳ありません。

0

私はハッシュのためにNSStringのカテゴリを作った:

- (NSString *)MD5 { 
    // Create pointer to the string as UTF8 
    const char *ptr = [self UTF8String]; 

    // Create byte array of unsigned chars 
    unsigned char md5Buffer[CC_MD5_DIGEST_LENGTH]; 

    // Create 16 byte MD5 hash value, store in buffer 
    CC_MD5(ptr, strlen(ptr), md5Buffer); 

    // Convert MD5 value in the buffer to NSString of hex values 
    NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2]; 
    for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) { 
     [output appendFormat:@"%02x",md5Buffer[i]]; 
    } 

    return output; 
} 

私はなぜあなたが一緒に2つのハッシュを追加したいと思います知っているが、これはあなたを助けるかもしれないいけません。

0

@PiotrKが最も役立つ回答をしているようです。私はリンクのコードを見直しましたが、それはかなり良く見えます(自分でも試していませんでした)。ただし、リンクのコードに関する2つの項目。最初に、Lopes-da-silva(PiotrKのリンクの著者)は、ローカルの自動解放プールを作成することが非効率的であると主張しています。この神話は否定されました。自動リリースプールを作成して破壊してください。安いですが(このコードはおそらく高速ですが)第2に、リンクされたコードはwhileループ内で "buffer"(再利用すべきである)を宣言します。それはwhileループの外側にスコープされるべきです。たいていの場合、コンパイラは、ループごとではなく、一度だけスタックフレームにバッファを割り当てることでこれを処理します。しかし、皮肉なことに、autoreleaseプールの周りにコーディングすることで、著者が避けたいと思っていた問題を生み出す可能性があります。

最後にOPのために、MD5ハッシュアルゴリズムを使ってデータをストリーミングすることを望んでいましたが、独自のセキュリティアルゴリズムを発明するつもりはありません。それは通常、悪い考えです。セキュリティアルゴリズムの世界で斬新なことを試しているなら、Bruce SchneierのApplied Cryptographyのようないくつかの暗号化ブックスを紹介します。または、あなたが達成しようとしているもので上記の質問を明確にしてください。

関連する問題