<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>DefaultHashService (Apache Shiro 1.12.0 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../jquery/jquery-3.6.0.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-ui.min.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="DefaultHashService (Apache Shiro 1.12.0 API)";
        }
    }
    catch(err) {
    }
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav"><!-- Matomo --> <script>   var _paq = window._paq = window._paq || [];   /* tracker methods like "setCustomDimension" should be called before "trackPageView" */   /* We explicitly disable cookie tracking to avoid privacy issues */   _paq.push(['disableCookies']);   _paq.push(['trackPageView']);   _paq.push(['enableLinkTracking']);   (function() {     var u="//matomo.privacy.apache.org/";     _paq.push(['setTrackerUrl', u+'matomo.php']);     _paq.push(['setSiteId', '2']);     var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];     g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);   })(); </script> <!-- End Matomo Code -->
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/DefaultHashService.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.shiro.crypto.hash</a></div>
<h2 title="Class DefaultHashService" class="title">Class DefaultHashService</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.shiro.crypto.hash.DefaultHashService</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="ConfigurableHashService.html" title="interface in org.apache.shiro.crypto.hash">ConfigurableHashService</a></code>, <code><a href="HashService.html" title="interface in org.apache.shiro.crypto.hash">HashService</a></code></dd>
</dl>
<hr>
<pre>public class <a href="../../../../../src-html/org/apache/shiro/crypto/hash/DefaultHashService.html#line.69">DefaultHashService</a>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a>
implements <a href="ConfigurableHashService.html" title="interface in org.apache.shiro.crypto.hash">ConfigurableHashService</a></pre>
<div class="block">Default implementation of the <a href="HashService.html" title="interface in org.apache.shiro.crypto.hash"><code>HashService</code></a> interface, supporting a customizable hash algorithm name,
 secure-random salt generation, multiple hash iterations and an optional internal
 <a href="#setPrivateSalt(org.apache.shiro.util.ByteSource)"><code>privateSalt</code></a>.
 <h2>Hash Algorithm</h2>
 You may specify a hash algorithm via the <a href="#setHashAlgorithmName(java.lang.String)"><code>setHashAlgorithmName(String)</code></a> property.  Any algorithm name
 understood by the JDK
 <a href="https://docs.oracle.com/javase/8/docs/api/java/security/MessageDigest.html?is-external=true#getInstance(java.lang.String)" title="class or interface in java.security" class="externalLink"><code>MessageDigest.getInstance(String algorithmName)</code></a> method
 will work.  The default is <code>SHA-512</code>.
 <h2>Random Salts</h2>
 When a salt is not specified in a request, this implementation generates secure random salts via its
 <a href="#setRandomNumberGenerator(org.apache.shiro.crypto.RandomNumberGenerator)"><code>randomNumberGenerator</code></a> property.
 Random salts (and potentially combined with the internal <a href="#getPrivateSalt()"><code>privateSalt</code></a>) is a very strong
 salting strategy, as salts should ideally never be based on known/guessable data.  The default instance is a
 <a href="../SecureRandomNumberGenerator.html" title="class in org.apache.shiro.crypto"><code>SecureRandomNumberGenerator</code></a>.
 <h2>Hash Iterations</h2>
 Secure hashing strategies often employ multiple hash iterations to slow down the hashing process.  This technique
 is usually used for password hashing, since the longer it takes to compute a password hash, the longer it would
 take for an attacker to compromise a password.  This
 <a href="http://www.stormpath.com/blog/strong-password-hashing-apache-shiro">blog article</a>
 explains in greater detail why this is useful, as well as information on how many iterations is 'enough'.
 <p/>
 You may set the number of hash iterations via the <a href="#setHashIterations(int)"><code>setHashIterations(int)</code></a> property.  The default is
 <code>1</code>, but should be increased significantly if the <code>HashService</code> is intended to be used for password
 hashing. See the linked blog article for more info.
 <h2>Private Salt</h2>
 If using this implementation as part of a password hashing strategy, it might be desirable to configure a
 <a href="#setPrivateSalt(org.apache.shiro.util.ByteSource)"><code>private salt</code></a>:
 <p/>
 A hash and the salt used to compute it are often stored together.  If an attacker is ever able to access
 the hash (e.g. during password cracking) and it has the full salt value, the attacker has all of the input necessary
 to try to brute-force crack the hash (source + complete salt).
 <p/>
 However, if part of the salt is not available to the attacker (because it is not stored with the hash), it is
 <em>much</em> harder to crack the hash value since the attacker does not have the complete inputs necessary.
 <p/>
 The <a href="#getPrivateSalt()"><code>privateSalt</code></a> property exists to satisfy this private-and-not-shared part of the salt.
 If you configure this attribute, you can obtain this additional very important safety feature.
 <p/>
 <b>*</b>By default, the <a href="#getPrivateSalt()"><code>privateSalt</code></a> is null, since a sensible default cannot be used that
 isn't easily compromised (because Shiro is an open-source project and any default could be easily seen and used).</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.2</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!--   -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">DefaultHashService</a></span>()</code></th>
<td class="colLast">
<div class="block">Constructs a new <code>DefaultHashService</code> instance with the following defaults:
 
 <a href="#setHashAlgorithmName(java.lang.String)"><code>hashAlgorithmName</code></a> = <code>SHA-512</code>
 <a href="#setHashIterations(int)"><code>hashIterations</code></a> = <code>1</code>
 <a href="#setRandomNumberGenerator(org.apache.shiro.crypto.RandomNumberGenerator)"><code>randomNumberGenerator</code></a> =
 new <a href="../SecureRandomNumberGenerator.html" title="class in org.apache.shiro.crypto"><code>SecureRandomNumberGenerator</code></a>()
 <a href="#setGeneratePublicSalt(boolean)"><code>generatePublicSalt</code></a> = <code>false</code>
 </div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>protected <a href="../../util/ByteSource.html" title="interface in org.apache.shiro.util">ByteSource</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#combine(org.apache.shiro.util.ByteSource,org.apache.shiro.util.ByteSource)">combine</a></span>&#8203;(<a href="../../util/ByteSource.html" title="interface in org.apache.shiro.util">ByteSource</a>&nbsp;privateSalt,
       <a href="../../util/ByteSource.html" title="interface in org.apache.shiro.util">ByteSource</a>&nbsp;publicSalt)</code></th>
<td class="colLast">
<div class="block">Combines the specified 'private' salt bytes with the specified additional extra bytes to use as the
 total salt during hash computation.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code><a href="Hash.html" title="interface in org.apache.shiro.crypto.hash">Hash</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#computeHash(org.apache.shiro.crypto.hash.HashRequest)">computeHash</a></span>&#8203;(<a href="HashRequest.html" title="interface in org.apache.shiro.crypto.hash">HashRequest</a>&nbsp;request)</code></th>
<td class="colLast">
<div class="block">Computes and responds with a hash based on the specified request.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getAlgorithmName(org.apache.shiro.crypto.hash.HashRequest)">getAlgorithmName</a></span>&#8203;(<a href="HashRequest.html" title="interface in org.apache.shiro.crypto.hash">HashRequest</a>&nbsp;request)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getHashAlgorithmName()">getHashAlgorithmName</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getHashIterations()">getHashIterations</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>protected int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getIterations(org.apache.shiro.crypto.hash.HashRequest)">getIterations</a></span>&#8203;(<a href="HashRequest.html" title="interface in org.apache.shiro.crypto.hash">HashRequest</a>&nbsp;request)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="../../util/ByteSource.html" title="interface in org.apache.shiro.util">ByteSource</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getPrivateSalt()">getPrivateSalt</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>protected <a href="../../util/ByteSource.html" title="interface in org.apache.shiro.util">ByteSource</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getPublicSalt(org.apache.shiro.crypto.hash.HashRequest)">getPublicSalt</a></span>&#8203;(<a href="HashRequest.html" title="interface in org.apache.shiro.crypto.hash">HashRequest</a>&nbsp;request)</code></th>
<td class="colLast">
<div class="block">Returns the public salt that should be used to compute a hash based on the specified request or
 <code>null</code> if no public salt should be used.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="../RandomNumberGenerator.html" title="interface in org.apache.shiro.crypto">RandomNumberGenerator</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getRandomNumberGenerator()">getRandomNumberGenerator</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isGeneratePublicSalt()">isGeneratePublicSalt</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns <code>true</code> if a public salt should be randomly generated and used to compute a hash if a
 <a href="HashRequest.html" title="interface in org.apache.shiro.crypto.hash"><code>HashRequest</code></a> does not specify a salt, <code>false</code> otherwise.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setGeneratePublicSalt(boolean)">setGeneratePublicSalt</a></span>&#8203;(boolean&nbsp;generatePublicSalt)</code></th>
<td class="colLast">
<div class="block">Sets whether or not a public salt should be randomly generated and used to compute a hash if a
 <a href="HashRequest.html" title="interface in org.apache.shiro.crypto.hash"><code>HashRequest</code></a> does not specify a salt.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setHashAlgorithmName(java.lang.String)">setHashAlgorithmName</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;name)</code></th>
<td class="colLast">
<div class="block">Sets the name of the <a href="https://docs.oracle.com/javase/8/docs/api/java/security/MessageDigest.html?is-external=true" title="class or interface in java.security" class="externalLink"><code>MessageDigest</code></a> algorithm that will be used to compute
 hashes.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setHashIterations(int)">setHashIterations</a></span>&#8203;(int&nbsp;count)</code></th>
<td class="colLast">
<div class="block">Sets the number of hash iterations that will be performed during hash computation.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setPrivateSalt(org.apache.shiro.util.ByteSource)">setPrivateSalt</a></span>&#8203;(<a href="../../util/ByteSource.html" title="interface in org.apache.shiro.util">ByteSource</a>&nbsp;privateSalt)</code></th>
<td class="colLast">
<div class="block">Sets the 'private' (internal) salt to be paired with a 'public' (random or supplied) salt during hash computation.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setRandomNumberGenerator(org.apache.shiro.crypto.RandomNumberGenerator)">setRandomNumberGenerator</a></span>&#8203;(<a href="../RandomNumberGenerator.html" title="interface in org.apache.shiro.crypto">RandomNumberGenerator</a>&nbsp;rng)</code></th>
<td class="colLast">
<div class="block">Sets a source of randomness used to generate public salts that will in turn be used during hash computation.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang" class="externalLink">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang" class="externalLink">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang" class="externalLink">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang" class="externalLink">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang" class="externalLink">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang" class="externalLink">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang" class="externalLink">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang" class="externalLink">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait(long,int)" title="class or interface in java.lang" class="externalLink">wait</a></code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!--   -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;()">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>DefaultHashService</h4>
<pre>public&nbsp;<a href="../../../../../src-html/org/apache/shiro/crypto/hash/DefaultHashService.html#line.110">DefaultHashService</a>()</pre>
<div class="block">Constructs a new <code>DefaultHashService</code> instance with the following defaults:
 <ul>
 <li><a href="#setHashAlgorithmName(java.lang.String)"><code>hashAlgorithmName</code></a> = <code>SHA-512</code></li>
 <li><a href="#setHashIterations(int)"><code>hashIterations</code></a> = <code>1</code></li>
 <li><a href="#setRandomNumberGenerator(org.apache.shiro.crypto.RandomNumberGenerator)"><code>randomNumberGenerator</code></a> =
 new <a href="../SecureRandomNumberGenerator.html" title="class in org.apache.shiro.crypto"><code>SecureRandomNumberGenerator</code></a>()</li>
 <li><a href="#setGeneratePublicSalt(boolean)"><code>generatePublicSalt</code></a> = <code>false</code></li>
 </ul>
 <p/>
 If this hashService will be used for password hashing it is recommended to set the
 <a href="#setPrivateSalt(org.apache.shiro.util.ByteSource)"><code>privateSalt</code></a> and significantly increase the number of
 <a href="#setHashIterations(int)"><code>hashIterations</code></a>.  See the class-level JavaDoc for more information.</div>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section>
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a id="computeHash(org.apache.shiro.crypto.hash.HashRequest)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>computeHash</h4>
<pre class="methodSignature">public&nbsp;<a href="Hash.html" title="interface in org.apache.shiro.crypto.hash">Hash</a>&nbsp;<a href="../../../../../src-html/org/apache/shiro/crypto/hash/DefaultHashService.html#line.150">computeHash</a>&#8203;(<a href="HashRequest.html" title="interface in org.apache.shiro.crypto.hash">HashRequest</a>&nbsp;request)</pre>
<div class="block">Computes and responds with a hash based on the specified request.
 <p/>
 This implementation functions as follows:
 <ul>
 <li>If the request's <a href="HashRequest.html#getSalt()"><code>salt</code></a> is null:
 <p/>
 A salt will be generated and used to compute the hash.  The salt is generated as follows:
 <ol>
 <li>Use the <a href="#getRandomNumberGenerator()"><code>randomNumberGenerator</code></a> to generate a new random number.</li>
 <li><a href="#combine(org.apache.shiro.util.ByteSource,org.apache.shiro.util.ByteSource)"><code>combine</code></a> this random salt with any configured
 <a href="#getPrivateSalt()"><code>privateSalt</code></a>
 </li>
 <li>Use the combined value as the salt used during hash computation</li>
 </ol>
 </li>
 <li>
 If the request salt is not null:
 <p/>
 This indicates that the hash computation is for comparison purposes (of a
 previously computed hash).  The request salt will be <a href="#combine(org.apache.shiro.util.ByteSource,org.apache.shiro.util.ByteSource)"><code>combined</code></a> with any
 configured <a href="#getPrivateSalt()"><code>privateSalt</code></a> and used as the complete salt during hash computation.
 </li>
 </ul>
 <p/>
 The returned <code>Hash</code>'s <a href="Hash.html#getSalt()"><code>salt</code></a> property
 will contain <em>only</em> the 'public' part of the salt and <em>NOT</em> the privateSalt.  See the class-level
 JavaDoc explanation for more info.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="HashService.html#computeHash(org.apache.shiro.crypto.hash.HashRequest)">computeHash</a></code>&nbsp;in interface&nbsp;<code><a href="HashService.html" title="interface in org.apache.shiro.crypto.hash">HashService</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>request</code> - the request to process</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the response containing the result of the hash computation, as well as any hash salt used that should be
         exposed to the caller.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="Hash.html#getSalt()"><code>Hash.getSalt()</code></a></dd>
</dl>
</li>
</ul>
<a id="getAlgorithmName(org.apache.shiro.crypto.hash.HashRequest)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAlgorithmName</h4>
<pre class="methodSignature">protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;<a href="../../../../../src-html/org/apache/shiro/crypto/hash/DefaultHashService.html#line.174">getAlgorithmName</a>&#8203;(<a href="HashRequest.html" title="interface in org.apache.shiro.crypto.hash">HashRequest</a>&nbsp;request)</pre>
</li>
</ul>
<a id="getIterations(org.apache.shiro.crypto.hash.HashRequest)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getIterations</h4>
<pre class="methodSignature">protected&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/shiro/crypto/hash/DefaultHashService.html#line.182">getIterations</a>&#8203;(<a href="HashRequest.html" title="interface in org.apache.shiro.crypto.hash">HashRequest</a>&nbsp;request)</pre>
</li>
</ul>
<a id="getPublicSalt(org.apache.shiro.crypto.hash.HashRequest)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getPublicSalt</h4>
<pre class="methodSignature">protected&nbsp;<a href="../../util/ByteSource.html" title="interface in org.apache.shiro.util">ByteSource</a>&nbsp;<a href="../../../../../src-html/org/apache/shiro/crypto/hash/DefaultHashService.html#line.212">getPublicSalt</a>&#8203;(<a href="HashRequest.html" title="interface in org.apache.shiro.crypto.hash">HashRequest</a>&nbsp;request)</pre>
<div class="block">Returns the public salt that should be used to compute a hash based on the specified request or
 <code>null</code> if no public salt should be used.
 <p/>
 This implementation functions as follows:
 <ol>
 <li>If the request salt is not null and non-empty, this will be used, return it.</li>
 <li>If the request salt is null or empty:
 <ol>
 <li>If a private salt has been set <em>OR</em> <a href="#isGeneratePublicSalt()"><code>isGeneratePublicSalt()</code></a> is <code>true</code>,
 auto generate a random public salt via the configured
 <a href="#getRandomNumberGenerator()"><code>randomNumberGenerator</code></a>.</li>
 <li>If a private salt has not been configured and <a href="#isGeneratePublicSalt()"><code>isGeneratePublicSalt()</code></a> is <code>false</code>,
 do nothing - return <code>null</code> to indicate a salt should not be used during hash computation.</li>
 </ol>
 </li>
 </ol></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>request</code> - request the request to process</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the public salt that should be used to compute a hash based on the specified request or
         <code>null</code> if no public salt should be used.</dd>
</dl>
</li>
</ul>
<a id="combine(org.apache.shiro.util.ByteSource,org.apache.shiro.util.ByteSource)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>combine</h4>
<pre class="methodSignature">protected&nbsp;<a href="../../util/ByteSource.html" title="interface in org.apache.shiro.util">ByteSource</a>&nbsp;<a href="../../../../../src-html/org/apache/shiro/crypto/hash/DefaultHashService.html#line.246">combine</a>&#8203;(<a href="../../util/ByteSource.html" title="interface in org.apache.shiro.util">ByteSource</a>&nbsp;privateSalt,
                             <a href="../../util/ByteSource.html" title="interface in org.apache.shiro.util">ByteSource</a>&nbsp;publicSalt)</pre>
<div class="block">Combines the specified 'private' salt bytes with the specified additional extra bytes to use as the
 total salt during hash computation.  <code>privateSaltBytes</code> will be <code>null</code> }if no private salt has been
 configured.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>privateSalt</code> - the (possibly <code>null</code>) 'private' salt to combine with the specified extra bytes</dd>
<dd><code>publicSalt</code> - the extra bytes to use in addition to the given private salt.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a combination of the specified private salt bytes and extra bytes that will be used as the total
         salt during hash computation.</dd>
</dl>
</li>
</ul>
<a id="setHashAlgorithmName(java.lang.String)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setHashAlgorithmName</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/shiro/crypto/hash/DefaultHashService.html#line.275">setHashAlgorithmName</a>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;name)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="ConfigurableHashService.html#setHashAlgorithmName(java.lang.String)">ConfigurableHashService</a></code></span></div>
<div class="block">Sets the name of the <a href="https://docs.oracle.com/javase/8/docs/api/java/security/MessageDigest.html?is-external=true" title="class or interface in java.security" class="externalLink"><code>MessageDigest</code></a> algorithm that will be used to compute
 hashes.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="ConfigurableHashService.html#setHashAlgorithmName(java.lang.String)">setHashAlgorithmName</a></code>&nbsp;in interface&nbsp;<code><a href="ConfigurableHashService.html" title="interface in org.apache.shiro.crypto.hash">ConfigurableHashService</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - the name of the <a href="https://docs.oracle.com/javase/8/docs/api/java/security/MessageDigest.html?is-external=true" title="class or interface in java.security" class="externalLink"><code>MessageDigest</code></a> algorithm that will be used to
             compute hashes.</dd>
</dl>
</li>
</ul>
<a id="getHashAlgorithmName()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getHashAlgorithmName</h4>
<pre class="methodSignature">public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;<a href="../../../../../src-html/org/apache/shiro/crypto/hash/DefaultHashService.html#line.279">getHashAlgorithmName</a>()</pre>
</li>
</ul>
<a id="setPrivateSalt(org.apache.shiro.util.ByteSource)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setPrivateSalt</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/shiro/crypto/hash/DefaultHashService.html#line.283">setPrivateSalt</a>&#8203;(<a href="../../util/ByteSource.html" title="interface in org.apache.shiro.util">ByteSource</a>&nbsp;privateSalt)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="ConfigurableHashService.html#setPrivateSalt(org.apache.shiro.util.ByteSource)">ConfigurableHashService</a></code></span></div>
<div class="block">Sets the 'private' (internal) salt to be paired with a 'public' (random or supplied) salt during hash computation.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="ConfigurableHashService.html#setPrivateSalt(org.apache.shiro.util.ByteSource)">setPrivateSalt</a></code>&nbsp;in interface&nbsp;<code><a href="ConfigurableHashService.html" title="interface in org.apache.shiro.crypto.hash">ConfigurableHashService</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>privateSalt</code> - the 'private' internal salt to be paired with a 'public' (random or supplied) salt during
                    hash computation.</dd>
</dl>
</li>
</ul>
<a id="getPrivateSalt()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getPrivateSalt</h4>
<pre class="methodSignature">public&nbsp;<a href="../../util/ByteSource.html" title="interface in org.apache.shiro.util">ByteSource</a>&nbsp;<a href="../../../../../src-html/org/apache/shiro/crypto/hash/DefaultHashService.html#line.287">getPrivateSalt</a>()</pre>
</li>
</ul>
<a id="setHashIterations(int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setHashIterations</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/shiro/crypto/hash/DefaultHashService.html#line.291">setHashIterations</a>&#8203;(int&nbsp;count)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="ConfigurableHashService.html#setHashIterations(int)">ConfigurableHashService</a></code></span></div>
<div class="block">Sets the number of hash iterations that will be performed during hash computation.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="ConfigurableHashService.html#setHashIterations(int)">setHashIterations</a></code>&nbsp;in interface&nbsp;<code><a href="ConfigurableHashService.html" title="interface in org.apache.shiro.crypto.hash">ConfigurableHashService</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>count</code> - the number of hash iterations that will be performed during hash computation.</dd>
</dl>
</li>
</ul>
<a id="getHashIterations()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getHashIterations</h4>
<pre class="methodSignature">public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/shiro/crypto/hash/DefaultHashService.html#line.295">getHashIterations</a>()</pre>
</li>
</ul>
<a id="setRandomNumberGenerator(org.apache.shiro.crypto.RandomNumberGenerator)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setRandomNumberGenerator</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/shiro/crypto/hash/DefaultHashService.html#line.299">setRandomNumberGenerator</a>&#8203;(<a href="../RandomNumberGenerator.html" title="interface in org.apache.shiro.crypto">RandomNumberGenerator</a>&nbsp;rng)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="ConfigurableHashService.html#setRandomNumberGenerator(org.apache.shiro.crypto.RandomNumberGenerator)">ConfigurableHashService</a></code></span></div>
<div class="block">Sets a source of randomness used to generate public salts that will in turn be used during hash computation.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="ConfigurableHashService.html#setRandomNumberGenerator(org.apache.shiro.crypto.RandomNumberGenerator)">setRandomNumberGenerator</a></code>&nbsp;in interface&nbsp;<code><a href="ConfigurableHashService.html" title="interface in org.apache.shiro.crypto.hash">ConfigurableHashService</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>rng</code> - a source of randomness used to generate public salts that will in turn be used during hash computation.</dd>
</dl>
</li>
</ul>
<a id="getRandomNumberGenerator()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRandomNumberGenerator</h4>
<pre class="methodSignature">public&nbsp;<a href="../RandomNumberGenerator.html" title="interface in org.apache.shiro.crypto">RandomNumberGenerator</a>&nbsp;<a href="../../../../../src-html/org/apache/shiro/crypto/hash/DefaultHashService.html#line.303">getRandomNumberGenerator</a>()</pre>
</li>
</ul>
<a id="isGeneratePublicSalt()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isGeneratePublicSalt</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/shiro/crypto/hash/DefaultHashService.html#line.322">isGeneratePublicSalt</a>()</pre>
<div class="block">Returns <code>true</code> if a public salt should be randomly generated and used to compute a hash if a
 <a href="HashRequest.html" title="interface in org.apache.shiro.crypto.hash"><code>HashRequest</code></a> does not specify a salt, <code>false</code> otherwise.
 <p/>
 The default value is <code>false</code> but should definitely be set to <code>true</code> if the
 <code>HashService</code> instance is being used for password hashing.
 <p/>
 <b>NOTE:</b> this property only has an effect if a <a href="#getPrivateSalt()"><code>privateSalt</code></a> is NOT configured.  If a
 private salt has been configured and a request does not provide a salt, a random salt will always be generated
 to protect the integrity of the private salt (without a public salt, the private salt would be exposed as-is,
 which is undesirable).</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>true</code> if a public salt should be randomly generated and used to compute a hash if a
         <a href="HashRequest.html" title="interface in org.apache.shiro.crypto.hash"><code>HashRequest</code></a> does not specify a salt, <code>false</code> otherwise.</dd>
</dl>
</li>
</ul>
<a id="setGeneratePublicSalt(boolean)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>setGeneratePublicSalt</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/shiro/crypto/hash/DefaultHashService.html#line.341">setGeneratePublicSalt</a>&#8203;(boolean&nbsp;generatePublicSalt)</pre>
<div class="block">Sets whether or not a public salt should be randomly generated and used to compute a hash if a
 <a href="HashRequest.html" title="interface in org.apache.shiro.crypto.hash"><code>HashRequest</code></a> does not specify a salt.
 <p/>
 The default value is <code>false</code> but should definitely be set to <code>true</code> if the
 <code>HashService</code> instance is being used for password hashing.
 <p/>
 <b>NOTE:</b> this property only has an effect if a <a href="#getPrivateSalt()"><code>privateSalt</code></a> is NOT configured.  If a
 private salt has been configured and a request does not provide a salt, a random salt will always be generated
 to protect the integrity of the private salt (without a public salt, the private salt would be exposed as-is,
 which is undesirable).</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>generatePublicSalt</code> - whether or not a public salt should be randomly generated and used to compute a hash
                           if a <a href="HashRequest.html" title="interface in org.apache.shiro.crypto.hash"><code>HashRequest</code></a> does not specify a salt.</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/DefaultHashService.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 2004&#x2013;2023 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</body>
</html>
