对称加密算法
常见的算法
1.DES : Data Encryption standard
2.AES : Advanced Encryption standard
自己可以指定密钥,用密钥就可以破解了
也就是 加密和解密是互逆的
底层的原理一般是操作二进制
下面是 DES加密解密算法的 API ,因为用UTF-8编码,会报错,因此必须是用 Base64编码一下
import java.security.Key
import java.util.*
import javax.crypto.Cipher
import javax.crypto.SecretKeyFactory
import javax.crypto.spec.DESKeySpec
/**
* @Author lyr
* @create 2020/6/29 19:49
*/
fun main() {
val util = DESCrypt()
val result = (util.encrypt("hello world"))
println(result)
println(util.decrypt((result)))
}
class DESCrypt {
private val password = "12345677"
fun encrypt(yourWords: 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 s = cipher.doFinal(yourWords.toByteArray())
return Base64.getEncoder().encodeToString(s)
}
fun decrypt(cryptograph: String): String? {
val cipher = Cipher.getInstance("DES")
val kfactory = SecretKeyFactory.getInstance("DES")
val keySpec = DESKeySpec(password.toByteArray())
val key: Key? = kfactory.generateSecret(keySpec)
cipher.init(Cipher.DECRYPT_MODE, key)
val res = (cipher.doFinal(Base64.getDecoder().decode(cryptograph)))
return String(res)
}
}