Creates an {@code algorithmName}-specific hash of the specified {@code source} using the given
{@code salt} a total of {@code hashIterations} times.
<p/>
By default, this class only supports Object method arguments of
type {@code byte[]}, {@code char[]}, {@link string}, {@link java.io.File File},
{@link java.io.InputStream InputStream} or {@link hunt.shiro.util.ByteSource ByteSource}. If either
argument is anything other than these types a {@link hunt.shiro.codec.CodecException CodecException}
will be thrown.
<p/>
If you want to be able to hash other object types, or use other salt types, you need to override the
{@link #toBytes(Object) toBytes(Object)} method to support those specific types. Your other option is to
convert your arguments to one of the default supported types first before passing them in to this
constructor}.
@param algorithmName the {@link java.security.MessageDigest MessageDigest} algorithm name to use when
performing the hash.
@param source the source object to be hashed.
@param salt the salt to use for the hash
@param hashIterations the number of times the {@code source} argument hashed for attack resiliency.
@throws CodecException if either Object constructor argument cannot be converted into a byte array.
@throws UnknownAlgorithmException if the {@code algorithmName} is not available.
Creates an {@code algorithmName}-specific hash of the specified {@code source} using the given {@code salt} a total of {@code hashIterations} times. <p/> By default, this class only supports Object method arguments of type {@code byte[]}, {@code char[]}, {@link string}, {@link java.io.File File}, {@link java.io.InputStream InputStream} or {@link hunt.shiro.util.ByteSource ByteSource}. If either argument is anything other than these types a {@link hunt.shiro.codec.CodecException CodecException} will be thrown. <p/> If you want to be able to hash other object types, or use other salt types, you need to override the {@link #toBytes(Object) toBytes(Object)} method to support those specific types. Your other option is to convert your arguments to one of the default supported types first before passing them in to this constructor}.
@param algorithmName the {@link java.security.MessageDigest MessageDigest} algorithm name to use when performing the hash. @param source the source object to be hashed. @param salt the salt to use for the hash @param hashIterations the number of times the {@code source} argument hashed for attack resiliency. @throws CodecException if either Object constructor argument cannot be converted into a byte array. @throws UnknownAlgorithmException if the {@code algorithmName} is not available.