AES /DES 加密使用 CBC/ECB 工作模式
2018-01-03 18:41
567 查看
算法/工作模式、填充模式
AES DES 是加密算法
CBC ECB 是工作模式
后面的是 填充模式
加密的工作模式有
其中:CBC 和 ECB 比较常用
ECB 电子密码本模式:Electronic codebook 每块堵路加密
优点:分块处理 并行处理
缺点:同样的原文得到相同的密文 容易被攻击
CBC 密码分组链接:Cipher-block
chaining 每块加密依赖前一块的密文
优点:同样的原文得到不同的密文 原文微下的改变影响后面全部密文
缺点:加密需要串行处理 误差传递
DES加密算法 /ECB工作模式
L8fOkESMpKToj/ILJCEskg==
des ECB加密
DES加密算法 /CBC工作模式
(init方法需要多一个参数)
ICIh7W5XOBHFX86b1PFhOg==
des CBC加密
base64工具类
AES DES 是加密算法
CBC ECB 是工作模式
后面的是 填充模式
加密的工作模式有
ECB、CBC、CFB、OFB
其中:CBC 和 ECB 比较常用ECB 电子密码本模式:Electronic codebook 每块堵路加密
优点:分块处理 并行处理
缺点:同样的原文得到相同的密文 容易被攻击
CBC 密码分组链接:Cipher-block
chaining 每块加密依赖前一块的密文
优点:同样的原文得到不同的密文 原文微下的改变影响后面全部密文
缺点:加密需要串行处理 误差传递
DES加密算法 /ECB工作模式
/** * Created by wjs 2018/1/2 */ object DES_ECB_Crypt { //算法/工作模式/填充模式 val transformation = "DES/ECB/PKCS5Padding" val algorithm = "DES" //des加密 fun encrypt(input: String, password: String): String { //1.创建cipher对象 学习查看api val cipher = Cipher.getInstance(transformation) //2.初始化cirpher(参数1:加密/解密模式) val kf = SecretKeyFactory.getInstance(algorithm) 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(transformation) //2.初始化cirpher(参数1:加密/解密模式) val kf = SecretKeyFactory.getInstance(algorithm) 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) } }
测试
fun main(args: Array<String>) { val input = "des ECB加密" val password = "12345678" val des = DES_ECB_Crypt.encrypt(input, password) println(des) val dec = DES_ECB_Crypt.decrypt(des, password) println(dec) }结果
L8fOkESMpKToj/ILJCEskg==
des ECB加密
DES加密算法 /CBC工作模式
(init方法需要多一个参数)
/** * Created by wjs 2018/1/2 */ object DES_CBC_Crypt { //算法/工作模式/填充模式 val transformation = "DES/CBC/PKCS5Padding" val algorithm = "DES" //des加密 fun encrypt(input: String, password: String): String { //1.创建cipher对象 学习查看api val cipher = Cipher.getInstance(transformation) //2.初始化cirpher(参数1:加密/解密模式) val kf = SecretKeyFactory.getInstance(algorithm) val keySpe = DESKeySpec(password.toByteArray()) val key: Key = kf.generateSecret(keySpe) //加密模式 val iv = IvParameterSpec(password.toByteArray()) cipher.init(Cipher.ENCRYPT_MODE, key,iv)//CBC需要更多参数 //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(transformation) //2.初始化cirpher(参数1:加密/解密模式) val kf = SecretKeyFactory.getInstance(algorithm) val keySpe = DESKeySpec(password.toByteArray()) val key: Key = kf.generateSecret(keySpe) //解密模式 val iv = IvParameterSpec(password.toByteArray()) cipher.init(Cipher.DECRYPT_MODE, key,iv) //3.加密/解密 //val encrypt = cipher.doFinal(input.toByteArray()) //base64解码 val encrypt = cipher.doFinal(Base64.decode(input)) return String(encrypt) } }
测试
fun main(args: Array<String>) { val input = "des CBC加密" val password = "12345678" val des = DES_CBC_Crypt.encrypt(input, password) println(des) val dec = DES_CBC_Crypt.decrypt(des, password) println(dec) }
结果
ICIh7W5XOBHFX86b1PFhOg==
des CBC加密
base64工具类
AES和DES是用一样,就不在列举 AES加密算法
转发表明出处
点击下载demo
android互助群
相关文章推荐
- 高级加密标准AES的工作模式(ECB、CBC、CFB、OFB)
- 高级加密标准AES的工作模式(ECB、CBC、CFB、OFB)
- AES五种加密模式(CBC、ECB、CTR、OCF、CFB)
- AES分组对称加密模式:ECB/CBC/CFB/OFB
- AES 加密模式(ECB, CBC, CTR, CFB, OFB)
- 高级加密标准AES的工作模式(ECB、CBC、CFB、OFB)
- AES五种加密模式(CBC、ECB、CTR、OCF、CFB)
- AES五种加密模式(CBC、ECB、CTR、OCF、CFB)【转】
- 高级加密标准AES的工作模式(ECB、CBC、CFB、OFB)
- 块加密 工作模式 ECB、CBC、PCBC、CFB、OFB、CTR
- AES中几种加密模式的区别:ECB、CBC、CFB、OFB、CTR
- [java]java使用AES加密解密 ,AES-128/192/256-ECB加密模式
- AES分组对称加密模式:ECB/CBC/CFB/OFB缺CTR
- AES五种加密模式(CBC、ECB、CTR、OCF、CFB)
- 关于Android AES 的加密模式ECB/CBC/CFB/PCBC
- AES五种加密模式(CBC、ECB、CTR、OCF、CFB)
- AES五种加密模式(CBC、ECB、CTR、CFB、OCF)
- 高级加密标准AES的工作模式(ECB、CBC、CFB、OFB)
- AES 分组对称加密模式:ECB/CBC/CFB/OFB缺CTR
- AES五种加密模式(CBC、ECB、CTR、OCF、CFB)