2009-11-14 1 views
1

Я пишу приложение для Mac. Мне нужен код, который генерирует хэш из строки. Мне нужно создать эти хэши:Хеши в какао и цель-C

  • MD2
  • MD4
  • MD5
  • SHA-0
  • SHA-1

Как я могу это сделать? Спасибо.

+0

Retag: Я добавил «openssl» и «c». –

ответ

7

CommonCrypto (который является частью libsystem на Mac OS X) предоставляет все в вашем списке, кроме SHA-0.

Вам действительно нужен SHA-0? (Если у вас нет устаревших данных с использованием SHA-0, вы не должны начинать использовать его сейчас.)

0

Поскольку Objective-C является надмножеством C, вы можете использовать стандартные библиотеки OpenSSL на основе C для этого. Зайдите в EVP_DigestInit man page, чтобы начать. По сути, вы вызовете EVP_DigestInit, чтобы начать делать хэш, а затем читать данные в нем, используя EVP_DigestUpdate, пока вы не прочитаете все.

1

OpenSSL поставляется с Mac OS X, поэтому вы можете просто включить его заголовки. .: например

#include <openssl/pem.h> 
#include <openssl/rsa.h> 
#include <openssl/bio.h> 

The OpenSSL API является простым C, но вы можете обернуть вещи, которые нужно в классах Obj-C. (Я уверен, что вокруг уже есть некоторые обертки).

Посмотрите в конце этого блога, чтобы начать работу: http://sigpipe.macromates.com/2004/09/05/using-openssl-for-license-keys/
В статье использует OpenSSL для генерации лицензионных ключей для схемы защиты от копирования, но он предлагает инструкции о том, как использовать OpenSSL на Mac OS X.

5

Я написал этот пост в моем блоге:

http://cocoawithlove.com/2009/07/hashvalue-object-for-holding-md5-and.html

, который показывает класс, который создает MD5 и sHA256 хэш из произвольных данных. Он использует функции CC_MD5 и CC_SHA256 CommonCrypto для выполнения фактического хэширования. Вы можете легко следовать тому же подходу, чтобы включить дополнительные методы, которые вычисляют все хеши, которые вы указали.