关于java加密技术
1.所谓加密就是让信息数据更安全
明文===》进行转换
基本思路就是给原数据变成字节然后增加或者删除一定ascii值
替换
比如: hello world
3 秘钥 khoor zruog
转换
hello
idnjr
秘钥:[1,-1,2,-2,3] 数组 byte[]
加密的几个概念
明文 + 密钥 = 密文
2.简单加密方式(其本质就是做替换)===编码
a:BASE64Encoder(一般来做图片或者音[视]频字节与字符串转换)
b:URLEncoder(一般给网络传输内容做转换)
3:获取者极为重要
Provider[] pp = Security.getProviders();
获得安全验证提供者
Security.addProvider(new com.sun.crypto.provider.SunJCE());
如果没有自带,则手动添加验证提供者为sun
4:复杂加密方式
javax.crypto包与java.security包
a:单向加密(如:MD5,SHA)结果不可逆,保存指纹做对比
MessageDigest类==》更新摘要(update)==》生成字节数组(digest)
加盐
加密次数
在哪里可以知道加密算法的名字?
Security.getAlgorithms("服务名【例如MessageDigest,Cipher等】")
b:双向加密
b1:对称加密【秘钥加密】(使用一个密码加密解密)
(如:DES,DESede,AES)
KeyGenerator:秘钥生成器(用来指定秘钥方式)
SecretKey:秘钥(由秘钥生成器生成[包含字节数组])
Cipher:生成转换器(要初始化(init)指定模式后doFinal最终生成)
各种不同获得密钥的写法:
SecretKeySpec sk = new SecretKeySpec("111111111".getBytes(), "DES");
DESKeySpec dks = new DESKeySpec("11111111".getBytes());
SecretKey sk = SecretKeyFactory.getInstance("DES").generateSecret(dks);
b2:非对称加密(使用公钥私钥加密解密)
(RSA)
KeyPairGenerator:秘钥对生成器
要初始化秘钥长度
KeyPair:秘钥对(由秘钥对生成器生成[包含公私钥])
4:关于mysql中自带的加密
a:ENCODE
b:AES_DECRYPT
c:ENCRYPT(linux或Unix系统)调系统底层加密