Mercurial > cgi-bin > hgweb.cgi > PassMan
view src/main/kotlin/name/blackcap/passman/Hashing.kt @ 0:a6cfdffcaa94
Initial commit, incomplete but it runs sorta.
author | David Barts <n5jrn@me.com> |
---|---|
date | Sun, 11 Sep 2022 16:11:37 -0700 |
parents | |
children | 698c4a3d758d |
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) } }