aes加密
对称密码算法的加密密钥和解密密钥相同,对于大多数对称密码算法,加解密过程互逆。
通常使用的有 DES 3DES AES ,加解密
特点:算法公开、计算量小、加密速度快、加密效率高
弱点:双方都使用同样密钥,安全性得不到保证
对称密码有流密码和分组密码两种,但是现在普遍使用的是分组密码:
分组密码工作模式:
-
ECB:电子密码本(最常用的,每次加密均产生独立的密文分组,并且对其他的密文分组不会产生影响,也就是相同的明文加密后产生相同的密文
-
CBC:密文链接(常用的,明文加密前需要先和前面的密文进行异或运算,也就是相同的明文加密后产生不同的密文)
-
CFB:密文反馈
-
OFB:输出反馈
-
CTR:计数器
分组密码填充方式:
-
NoPadding:无填充
-
PKCS5Padding:
-
ISO10126Padding:
常用对称密码:
-
DES(Data Encryption Standard,数据加密标准)
-
3DES(Triple DES、DESede,进行了三重DES加密的算法
-
AES(Advanced Encryption Standard,高级数据加密标准,AES算法可以有效抵制针对DES的攻击算法)
————————————————————————————————————————————————————————
愿意到此为止,此篇文章主要记录开发中使用到 AES 加密在Andorid 中的使用,以免下次使用的时候找不到。
/**
* aes加密
*
* @param content 需要加密的内容
* @param key 加密密码
* @return
*/
public static String encryptAES(String content, String key) {
byte[] byteContent = new byte[0]; // 避免空指针,设置不占用控件的byte[]
byte[] encryptedBytes = new byte[0];
try {
byteContent = content.getBytes("UTF-8");
byte[] enCodeFormat = key.getBytes();
SecretKeySpec secretKeySpec = new SecretKeySpec(enCodeFormat, "AES");
// byte[] initParam = IV_STRING.getBytes();
// IV_STRING AES指定偏移量,可以设置,可以不设置,根据加密模式确定
// IvparameterSpec ivParameterSpec = new IvParameterSpec(initParam);
// 设置偏移量
// 指定加密的算法、工作模式和填充方式
Cipher cipher = null;
cipher = Cipher.getinstance(CIPHER_5ALGORITHM);
//CIPHER_5ALGORITHM =AES/ECB/PKCS5Padding AES 加密方式,ECB 模式 , PKCS5Padding 填充方式;
//cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec,ivParameterSpec);
//cipher.init方法,可以谁知传入偏移量,或者不传入
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
encryptedBytes = cipher.dofinal(byteContent);
//最终加密后输入的是 bety【】 数组,这里服务端需要什么格式,直接转换就可以
} catch (Exception e) {
LogUtils.e("lipeng",e.toString());
}
return bytes2HexString(encryptedBytes);
}
上述代码直接贴过去就可以,最后加密得到的是一个 bety【】 数组,确定服务端需要使用什么样的数据,可以转换后在传递参数。
注意点:
1、第一key值,对称加密前后端加密秘钥要统一。
2、偏移量是否设置相同的偏移量。
3、填充方式,加密模式 前后端统一。
因为java提供了AES加密的API ,所以使用起来还是相对方便,但是由于种种事情,还是踩了一个坑。
注意这是采坑的代码
这里是拷贝的后台的代码,标注是AES加密。但是应该是使用了 DES加密的方式。其中加密模式 BC 有点迷,然后告诉我是AES加密,我这边各种百度出来AES加密后的数据,均无法正确解密。后来没办法了,直接找后台要的他们加密的代码,发现了问题。
如果有DES 3DES AES 各种介绍,工具类。可以参考
https://mp.weixin.qq.com/s/wmBqL2PtLqkZZO5EKsJTJw
相关阅读
MD5加密是一种常见的加密方式,我们经常用在保存用户密码和关键信息上。那么它到底有什么,又什么好处呢,会被这么广泛的运用在应用开
最近发现看网易公开课的时候发现一个问题,网易公开课付费视频没有加密,一次付费便可以随意下载到本地。 例如现在我们打开一个付费
非对称加密体系 简介: 非对称加密也称之为公钥密码,密钥分为两种分别为加密密钥和解密密钥,发送者使用加密密钥加密数据,消息接收者
Python爬虫教程-16-破解js加密实例(有道在线翻译)
python爬虫教程-16-破解js加密实例(有道在线翻译) 在爬虫爬取网站的时候,经常遇到一些反爬虫技术,比如: 加cookie,身份验证UserAgent
A5创业网(公众号:iadmin5)11月17日报道,英伟达股价周五暴跌,盘后股价一度暴跌近20%,创下10多年来最大单日跌幅,让这家显卡制造商市值损失