Skip to main content

hashString


object Utils {

  val currentYear: String
    get() {
      val year = Calendar.getInstance().get(Calendar.YEAR)
      return year.toString()
    }

  fun isEmpty(ed: EditText): Boolean {
    val temp = ed.text.toString().replace("\\s".toRegex(), "")
    return TextUtils.isEmpty(temp)
  }

  fun getString(ed: EditText): String {
    return ed.text.toString()
  }

  fun showToast(context: Context, message: String) {
    Toast.makeText(context, message, Toast.LENGTH_LONG).show()
  }

  fun convertDateTime(DateTime: String, dateFormat1: SimpleDateFormat, dateFormat2: SimpleDateFormat): String {
    var DateTime = DateTime
    try {
      val value = dateFormat1.parse(DateTime)
      DateTime = dateFormat2.format(value)

    } catch (e: Exception) {

      DateTime = DateTime

    }

    return DateTime
  }

  fun capWord(capString: String): String {
    val capBuffer = StringBuffer()
    val capMatcher = Pattern.compile("([a-z])([a-z]*)", Pattern.CASE_INSENSITIVE).matcher(capString)
    while (capMatcher.find()) {
      capMatcher.appendReplacement(capBuffer, capMatcher.group(1).toUpperCase() + capMatcher.group(2).toLowerCase())
    }

    return capMatcher.appendTail(capBuffer).toString()
  }

  fun addDays(date: Date, days: Int): Date {
    val cal = Calendar.getInstance()
    cal.setTime(date)
    cal.add(Calendar.DATE, days) //minus number would decrement the days
    return cal.getTime()
  }

  fun MD5(input: String): String {
    val HEX_CHARS = "0123456789ABCDEF"
    val digest: MessageDigest
    try {
      digest = MessageDigest.getInstance("MD5")
      digest.reset()
      digest.update(input.toByteArray())
      val a = digest.digest()
      val len = a.size
      val sb = StringBuilder(len shl 1)
      for (i in 0 until len) {
        sb.append(HEX_CHARS[i shr 4 and 0x0f])
        sb.append(HEX_CHARS[i and 0x0f])
      }
      return sb.toString()
    } catch (e: NoSuchAlgorithmException) {
      e.printStackTrace()
    }

    return input
  }

  private fun hashString(type: String, input: String): String {
    val HEX_CHARS = "0123456789ABCDEF"
    val bytes = MessageDigest
            .getInstance(type)
            .digest(input.toByteArray())
    val result = StringBuilder(bytes.size * 2)

    bytes.forEach {
      val i = it.toInt()
      result.append(HEX_CHARS[i shr 4 and 0x0f])
      result.append(HEX_CHARS[i and 0x0f])
    }

    return result.toString()
  }

  fun generateMD5(message: String): String {
    return hashString("MD5", message)
  }

  fun generateSHA1(message: String): String {
    return hashString("SHA-1", message)
  }
}