2014-11-01 5 views
1

В Java я могу это сделать, чтобы вычислить HMAC:Расчет HMAC в Русте

import javax.crypto.Mac; 
import javax.crypto.spec.SecretKeySpec; 

//....... 
Mac hmac = Mac.getInstance("some algorithm"); 
hmac.init(new SecretKeySpec("some secret", "some algorithm")); 
byte[] res = hmac.doFinal(("some str").getBytes()); 

Как я могу сделать то же самое в Rust?

+2

Там нет ничего стандартные библиотеки для HMAC. –

+0

@ChrisMorgan, вопрос не о HMAC в стандартных библиотеках. –

+1

О, давай, я сделал простое заявление, которое совершенно верно! Я ничего не комментировал, за или против. –

ответ

5

rust-crypto похоже на offer HMAC. Правильный способ использовать это для install Cargo, и добавить

[dependencies.rust-crypto] 
git = "https://github.com/DaGenix/rust-crypto" 

к вашему Cargo.toml.

Похоже, правильный API является вызов Hmac::new с выбранным ключом & дайджеста (все, что реализующий Digest черта работает, например, Sha256), данные корма через input и выписке результат с result (они требуют импорта the Mac trait.

Я не могу найти какой-либо онлайн-документации, но работает cargo doc в вашем коде локально после добавления зависимость будет строить документацию по rust-crypto в (IIRC) ./target/doc/rust-crypto.

+0

'с выбранным ключом & digest' - дайджест - это имя алгоритма, например SHA1, SHA512, DES, правильно? –

+0

@AlexanderSupertramp, да, в основном. [См. Тесты в конце файла для примеров использования] (https://github.com/DaGenix/rust-crypto/blob/bd9f097058131f89ca85fb3a8f02d47833449061/src/rust-crypto/hmac.rs#L163). – huon

+0

что lib не компилируется, он говорит: «error: macro undefined:« panic! ». Поскольку фиксация его сама и создание запроса на растяжение может занять много времени, что бы вы мне предложили? Я думаю, что я должен исправить его локально и использовать его как бы в моей библиотеке. –

Смежные вопросы