Я отвечал на это раньше ( Как SHA1 хэшировать строку в Android? ), но она подходит и здесь:
Android поставляется с кодеком Apache Commons Codec, так что вы можете простоиспользуйте следующую строку для создания шестнадцатеричной строки SHA-1:
String myHexHash = DigestUtils.shaHex(myFancyInput);
Это старый устаревший метод, который используется в Android 4 по умолчанию.В новых версиях DigestUtils представлены все разновидности методов shaHex (), таких как sha256Hex (), а также перегружены методы с различными типами аргументов.
Конечно, в DigestUtils и в остальном кодеке Commons больше функциональности.Просто взгляните.
http://commons.apache.org/proper/commons-codec//javadocs/api-release/org/apache/commons/codec/digest/DigestUtils.html
РЕДАКТИРОВАТЬ:
Если вы получите ClassNotFoundError, вам придется явно добавить commons-codec в качестве зависимости (даже если он должен прийтис Android в качестве переходной зависимости), в Maven, например:
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.7</version>
</dependency>
А также вам придется изменить вызов на:
String myHexHash = new String(Hex.encodeHex(DigestUtils.sha512(myFancyInput)));
(мое скромное предположение, что это, вероятно,из-за проблемы ClassLoader (конфликт имен классов) в виртуальной машине Android - которая фактически доказывает, что классы общих кодеков уже присутствуют ...)
См. также: https://stackoverflow.com/a/9284092/621690