Java 加密算法与信息安全
信息安全在建立在加密算法上,加密算法越难破解,那么信息被破解概率就越小,也就是信息越安全!
加密算法应用非常广泛,可以说现在任何一个系统都用到了加密算法,特别是银行、支付宝、微信支付, 这些系统的加密算法的应用更是无处不在,适想如果我们在支付环节要是被黑客截取,那就是不可估量的 损失!
加密算法用途:
- 防窃听
- 防篡改
- 防伪造
加密算法的来源: 加密算法其实来自数学理论上,也就是现在的密码学!如果您数学功底不错,能够设计出一个加密算法,并且难以被破解! 那么恭喜你,前途不可限量; 但是至今设计加密算法的数学家也就那几个,而且加密算法并不是无法破解,只是一些算法目前 还没有被破解!
网上经常看到:
在量子计算面前的所有的加密算法犹如一堆废铁(我不知,你们就看看)!
当然这里面说明的是量子计算真的是黑科技,各国目前都在大力研究量子计算!希望我大中华能够早日研究出来!
Java 单向加密
单向加密的种类有大概以下几种
-
-
一般用于确保信息的传输完整一致性,校验传输的数据是否被修改,一旦原始信息被修改,生成的 MD5 值将会变得很不同
-
算法能将任意大小、格式的文字或文件进行加密从而产生 128 bit(16 字节)的散列值。
-
哈希碰撞:不同的字符串的 MD5 值一样。但是字符串越长,它们的MD5值一样的概率就越小!
-
算法不可逆,破解难度大!
-
应用在密码加密上; 现在的系统 99% 都会用到MD5加密算法!
-
应用在信息防伪造;
-
-
-
是一个密码散列函数家族,是 FIPS 所认证的安全散列算法
-
和 MD5 类似,都是对文本进行散列,产生一定长度的散列值
-
-
是一种通过特别计算方式之后产生的消息认证码(MAC),使用密码散列函数,同时结合一个加密密钥。它可以用来保证数据的完整性,同时可以用来作某个消息的身份验证。
Java 双向加密
-
Base64 编码是从二进制到字符的过程,用 64 个字符来表示任意的二进制数据;
常用于在 HTTP 加密,图片编码传输等, 当然也会和其它加密算法进行二次加密传递。
Java 对称加密
对称加密加密的种类有大概以下几种
-
数据加密标准,速度较快,适用于加密大量数据的场合。
-
DES
高级加密标准,是下一代的加密算法标准,速度快,安全级别高;
Java 非对称加密
非对称加密的种类有大概以下几种
-
1. 加密算法目前有768位,1024位,2048位,听说银行使用了4096位(太安全了吧) 2. 算法特点,密钥长度越长,越难被破解! 3. 目前被破解的有 768 位,超过这个长度的破解,还没有人公开!
-
数字签名算法,是一种标准的 DSS(数字签名标准);
-
1. Elliptic Curves Cryptography,椭圆曲线密码编码学。 2. 一种建立公开密钥加密的算法,基于椭圆曲线数学。 3. ECC的主要优势是在某些情况下它比其他的方法使用更小的密钥; 比如RSA加密算法——提供相当的或更高等级的安全。 ECC的另一个优势是可以定义群之间的双线性映射,基于Weil对或是Tate对; 双线性映射已经在密码学中发现了大量的应用,例如基于身份的加密。 不过一个缺点是加密和解密操作的实现比其他机制花费的时间长。
最后说一句(开个玩笑,娱乐下,你们看看就好,不要当真!):
如果你是天才,那么大胆去尝试设计算法!虽然失败的概率有99%,但是也要为了那 1% 而奋斗,万一成功了呢? 常人就算了,毕竟天才是不可复制的!