des对称加密,对称加密,是一种比较传统的加密方式,其加密运算、解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时,必须共同持有该密码(称为对称密码),是一种对称加密算法。
也就是说加密和解密用的是同一把钥匙。
用一个单利模式来写
/** * Created by wjs 2018/1/2 */ object DESCrypt { //des加密 fun encrypt(input: String, password: String): String { //1.创建cipher对象 学习查看api val cipher = Cipher.getInstance("DES") //2.初始化cirpher(参数1:加密/解密模式) val kf = SecretKeyFactory.getInstance("DES") val keySpe = DESKeySpec(password.toByteArray()) val key: Key = kf.generateSecret(keySpe) //加密模式 cipher.init(Cipher.ENCRYPT_MODE, key) //3.加密/解密 val encrypt = cipher.doFinal(input.toByteArray()) //通过Base64解决乱码问题 return Base64.encode(encrypt) } //des解密 fun decrypt(input: String, password: String): String { //1.创建cipher对象 学习查看api val cipher = Cipher.getInstance("DES") //2.初始化cirpher(参数1:加密/解密模式) val kf = SecretKeyFactory.getInstance("DES") val keySpe = DESKeySpec(password.toByteArray()) val key: Key = kf.generateSecret(keySpe) //解密模式 cipher.init(Cipher.DECRYPT_MODE, key) //3.加密/解密 //val encrypt = cipher.doFinal(input.toByteArray()) //base64解码 val encrypt = cipher.doFinal(Base64.decode(input)) return String(encrypt) } }
base64位加密解密 解决乱码问题:(同样是用单利来写)
base64位工具类
写一个main方法来测试一下:
fun main(args: Array<String>) { //原文 val input = "des加密" val password = "12345678"//密钥长度,des长度8位 //AES/CBC/NoPadding(56) 56 :8字节,8*8 = 64位 DES前7位参与加密算法 最后一位作为校验码 val des = DESCrypt.encrypt(input, password) println(des) val dec = DESCrypt.decrypt(des, password) println(dec) }
结果:
IDG257CnNZKUVIoujUFthw== des加密
转发表明出处
点击下载demo
android:互助群