kotlin之des加解密

代码:


import android.os.Build
import androidx.annotation.RequiresApi
import java.lang.Exception
import java.security.Key
import java.util.*
import javax.crypto.Cipher
import javax.crypto.SecretKeyFactory
import javax.crypto.spec.DESKeySpec

object DesCrypt {
    @RequiresApi(Build.VERSION_CODES.O)
    fun encrypt(password: String, input: String):String {

        val cipher = Cipher.getInstance("DES")

        val kf = SecretKeyFactory.getInstance("DES")
        val keySpec = DESKeySpec(password.toByteArray())

        val key: Key = kf.generateSecret(keySpec)
        cipher.init(Cipher.ENCRYPT_MODE, key)

        //加密
        val encrypt = cipher.doFinal(input.toByteArray())
        return Base64.getEncoder().encodeToString(encrypt)//通过Base64解决乱码问题,否则会出现异常(avax.crypto.IllegalBlockSizeException: last block incomplete in decryption)
    }

    fun dencrypt(password: String, input: String):String {

        val cipher = Cipher.getInstance("DES")

        val kf = SecretKeyFactory.getInstance("DES")
        val keySpec = DESKeySpec(password.toByteArray())

        val key: Key = kf.generateSecret(keySpec)
        cipher.init(Cipher.DECRYPT_MODE, key)

        //解密
        var dencrypt:ByteArray
        try {
            dencrypt = cipher.doFinal(Base64.getDecoder().decode(input))
        }catch (e: Exception){
            println(e)
            return ""
        }
        return String(dencrypt)
    }

}

 

    fun des加解密() {
        val str = "有了具名参数,有默认值的参数就没必要放在右边了;swift的外部参数,同样解决了了这本问题"
        val encrypt = DesCrypt.encrypt(password = "qwerasdf", input = str)
        println("---加密后:${encrypt}")

        val dencrypt = DesCrypt.dencrypt("qwerasdf", encrypt)
        println("---解密后:${dencrypt}")

    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值