Mercurial > cgi-bin > hgweb.cgi > PassMan
view src/main/kotlin/name/blackcap/passman/Hashing.kt @ 15:0fc90892a3ae
Add password subcommand.
author | David Barts <n5jrn@me.com> |
---|---|
date | Fri, 03 Feb 2023 18:48:13 -0800 |
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) } }