parent
							
								
									c42cf0a59e
								
							
						
					
					
						commit
						9be7857763
					
				@ -0,0 +1,69 @@ | 
				
			||||
package io.legado.app.utils | 
				
			||||
 | 
				
			||||
import java.security.MessageDigest | 
				
			||||
import java.security.NoSuchAlgorithmException | 
				
			||||
import javax.crypto.Mac | 
				
			||||
import javax.crypto.spec.SecretKeySpec | 
				
			||||
 | 
				
			||||
object DigestUtils { | 
				
			||||
 | 
				
			||||
    /** | 
				
			||||
     * 消息摘要 | 
				
			||||
     * MD2 MD5 SHA-1 SHA-256 SHA-384 SHA-512 | 
				
			||||
     */ | 
				
			||||
    fun getDigest( | 
				
			||||
        algorithm: String, | 
				
			||||
        data: String? | 
				
			||||
    ): String { | 
				
			||||
        data ?: return "" | 
				
			||||
        val bytes = getDigest(algorithm, data.toByteArray()) | 
				
			||||
        return StringUtils.byteToHexString(bytes) | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    fun getDigest( | 
				
			||||
        algorithm: String, | 
				
			||||
        data: ByteArray | 
				
			||||
    ): ByteArray { | 
				
			||||
        lateinit var bytes: ByteArray | 
				
			||||
        try { | 
				
			||||
            val messageDigest = MessageDigest.getInstance(algorithm) | 
				
			||||
            bytes = messageDigest.digest(data) | 
				
			||||
        } catch (e: NoSuchAlgorithmException) { | 
				
			||||
            e.printOnDebug() | 
				
			||||
        } | 
				
			||||
        return bytes | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    /** | 
				
			||||
     * 散列消息鉴别码 | 
				
			||||
     * HmacMD5 HmacSHA1 HmacSHA224 HmacSHA256 HmacSHA384 HmacSHA512 | 
				
			||||
     */ | 
				
			||||
    fun getHMac( | 
				
			||||
        algorithm: String, | 
				
			||||
        key: String, | 
				
			||||
        data: String? | 
				
			||||
    ): String { | 
				
			||||
        data ?: return "" | 
				
			||||
        val bytes = getHMac(algorithm, key.toByteArray(), data.toByteArray()) | 
				
			||||
        return StringUtils.byteToHexString(bytes) | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
    fun getHMac( | 
				
			||||
        algorithm: String, | 
				
			||||
        key: ByteArray, | 
				
			||||
        data: ByteArray | 
				
			||||
    ): ByteArray { | 
				
			||||
        lateinit var bytes: ByteArray | 
				
			||||
        try { | 
				
			||||
            val mac= Mac.getInstance(algorithm) | 
				
			||||
            val keySpec = SecretKeySpec(key, algorithm) | 
				
			||||
            mac.init(keySpec) | 
				
			||||
            mac.update(data) | 
				
			||||
            bytes = mac.doFinal() | 
				
			||||
        } catch(e: NoSuchAlgorithmException) { | 
				
			||||
            e.printOnDebug() | 
				
			||||
        } | 
				
			||||
        return bytes | 
				
			||||
    } | 
				
			||||
 | 
				
			||||
} | 
				
			||||
					Loading…
					
					
				
		Reference in new issue