login加密(MD5)全面java文档

关于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系统)调系统底层加密

上一篇:在Ubuntu下部署Flask项目


下一篇:python快递鸟获取中通面单