Хэши в какао и Objective-C - PullRequest
1 голос
/ 14 ноября 2009

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

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

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

Ответы [ 4 ]

7 голосов
/ 14 ноября 2009

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

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

5 голосов
/ 15 ноября 2009

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

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

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

1 голос
/ 14 ноября 2009

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

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

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

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

0 голосов
/ 14 ноября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...