Нет реализации bcrypt в iOS ... можно использовать другой язык, создать статическую библиотеку? - PullRequest
1 голос
/ 20 мая 2011

В Objective-C нет прямой реализации bCrypt (http://codahale.com/how-to-safely-store-a-password/)), и хотя есть код на C, который это выполняет, он специально предназначен для процессоров x86, использующих библиотеки BSD.

Я создаю приложение для iOS, которое использует те же хеши паролей, что и соответствующие онлайн-приложения (.NET и HTML5 + Javascript).

Я не совсем там, где должен быть, где я могу прочитать очень упрощенныйJava-код (http://www.mindrot.org/projects/jBCrypt/) и перевод его в код Objective-C, подходящий для разработки под iOS.

Однако есть реализация Ruby (https://github.com/codahale/bcrypt-ruby),, и я слышал, что выможно использовать Ruby для создания приложений iOS. Могу ли я затем свернуть код Ruby в статическую библиотеку и связать его с моими проектами iOS? Или даже использовать Mono и использовать реализацию .NET (также чистый, чистый код, нетпроект зависимости) создать статическую библиотеку?

Или, наконец, кто-нибудь знает о реализации кода bCrypt в Objective-C?Я не знаю достаточно о .NET / C # / Ruby, чтобы перевести его сам.

Ответы [ 3 ]

10 голосов
/ 29 июля 2011

Я недавно открыл исходный код своей собственной реализации BCrypt Objective C.Я тоже искал существующую реализацию Objective C, но безрезультатно.Поэтому я вместо этого перенес один из Java!

У него нет внешних зависимостей библиотеки или фреймворка, поэтому он может идеально подойти вам.

Вы можете найти его здесь ... http://www.jayfuerstenberg.com/blog/bcrypt-in-objective-c https://github.com/jayfuerstenberg/JFCommon

4 голосов
/ 20 мая 2011

iOS имеет Security.framework для обработки таких задач.См. Mac OS X и службы безопасности iOS , и для хранения безопасного пароля вы должны использовать Службы сертификатов, ключей и доверия, см. Пример для Шифрование и дешифрование данных .Статья, которую вы связали на bcrypt, не имеет большого значения для программирования устройств, так как она посвящена тому, как хранить безопасный пароль на стороне server .На устройстве вы всегда будете клиентом. Правила безопасного хранения паролей клиентами различаются, поскольку они обязаны знать исходный пароль почти во всех протоколах вызова, а на стороне клиента действует совершенно другая модель угроз, чем на стороне сервера.

2 голосов
/ 20 мая 2011

Objective C может использовать C-библиотеки.Зачем беспокоиться о Ruby, когда существуют https://github.com/rg3/bcrypt и http://www.openwall.com/crypt/?

...