Mercurial > cgi-bin > hgweb.cgi > PassMan
view src/main/kotlin/name/blackcap/passman/Hashing.kt @ 28:287eadf5ab30 default tip
Check for timeouts inside subcommands while in interactive mode as well.
author | David Barts <n5jrn@me.com> |
---|---|
date | Wed, 31 Jul 2024 11:21:18 -0700 |
parents | 698c4a3d758d |
children |
line wrap: on
line source
package name.blackcap.passman import java.nio.ByteBuffer import java.nio.ByteOrder import java.nio.CharBuffer import java.nio.charset.Charset import java.nio.charset.StandardCharsets import java.security.MessageDigest object Hashing { private const val HASHING_ALGORITHM = "MD5" private val CHARSET: Charset = StandardCharsets.UTF_8 fun hash(bytes: ByteBuffer): Long { val md = MessageDigest.getInstance(HASHING_ALGORITHM) bytes.rewind() md.update(bytes) return toLong(md.digest()) } fun hash(bytes: ByteArray): Long = hash(ByteBuffer.wrap(bytes)) fun hash(chars: CharArray): Long = hash(CHARSET.encode(CharBuffer.wrap(chars))) fun hash(string: String): Long = hash(CHARSET.encode(string)) private fun toLong(hash: ByteArray): Long = ByteBuffer.wrap(hash).run { order(ByteOrder.LITTLE_ENDIAN) getLong(hash.size - 8) } }