Java 加密算法与信息安全

信息安全在建立在加密算法上,加密算法越难破解,那么信息被破解概率就越小,也就是信息越安全!

加密算法应用非常广泛,可以说现在任何一个系统都用到了加密算法,特别是银行、支付宝、微信支付, 这些系统的加密算法的应用更是无处不在,适想如果我们在支付环节要是被黑客截取,那就是不可估量的 损失!

加密算法用途:

  • 防窃听
  • 防篡改
  • 防伪造

加密算法的来源: 加密算法其实来自数学理论上,也就是现在的密码学!如果您数学功底不错,能够设计出一个加密算法,并且难以被破解! 那么恭喜你,前途不可限量; 但是至今设计加密算法的数学家也就那几个,而且加密算法并不是无法破解,只是一些算法目前 还没有被破解!

网上经常看到:

在量子计算面前的所有的加密算法犹如一堆废铁(我不知,你们就看看)!

当然这里面说明的是量子计算真的是黑科技,各国目前都在大力研究量子计算!希望我大中华能够早日研究出来!

Java 单向加密

单向加密的种类有大概以下几种

  • Java MD5 加密 代码实现

    1. 一般用于确保信息的传输完整一致性,校验传输的数据是否被修改,一旦原始信息被修改,生成的 MD5 值将会变得很不同

    2. 算法能将任意大小、格式的文字或文件进行加密从而产生 128 bit(16 字节)的散列值。

    3. 哈希碰撞:不同的字符串的 MD5 值一样。但是字符串越长,它们的MD5值一样的概率就越小!

    4. 算法不可逆,破解难度大!

    5. 应用在密码加密上; 现在的系统 99% 都会用到MD5加密算法!

    6. 应用在信息防伪造;

  • Java SHA 加密 代码实现

    1. 是一个密码散列函数家族,是 FIPS 所认证的安全散列算法

    2. 和 MD5 类似,都是对文本进行散列,产生一定长度的散列值

  • Java HMAC 加密 代码实现

    是一种通过特别计算方式之后产生的消息认证码(MAC),使用密码散列函数,同时结合一个加密密钥。它可以用来保证数据的完整性,同时可以用来作某个消息的身份验证。

Java 双向加密

  • Java Base64 加密 代码实现

    Base64 编码是从二进制到字符的过程,用 64 个字符来表示任意的二进制数据;

    常用于在 HTTP 加密,图片编码传输等, 当然也会和其它加密算法进行二次加密传递。

Java 对称加密

对称加密加密的种类有大概以下几种

  • Java AES 加密算法 代码实现

    数据加密标准,速度较快,适用于加密大量数据的场合。
    
  • DES

    高级加密标准,是下一代的加密算法标准,速度快,安全级别高;

Java 非对称加密

非对称加密的种类有大概以下几种

  • Java RSA 代码实现

    1. 加密算法目前有768位,1024位,2048位,听说银行使用了4096位(太安全了吧)
    
    2. 算法特点,密钥长度越长,越难被破解!
    
    3. 目前被破解的有 768 位,超过这个长度的破解,还没有人公开!
    
  • Java DSA 代码实现

    数字签名算法,是一种标准的 DSS(数字签名标准);
    
  • Java ECC 代码实现

    1. Elliptic Curves Cryptography,椭圆曲线密码编码学。
    
    2. 一种建立公开密钥加密的算法,基于椭圆曲线数学。
    
    3. ECC的主要优势是在某些情况下它比其他的方法使用更小的密钥;
      比如RSA加密算法——提供相当的或更高等级的安全。
      ECC的另一个优势是可以定义群之间的双线性映射,基于Weil对或是Tate对;
      双线性映射已经在密码学中发现了大量的应用,例如基于身份的加密。
      不过一个缺点是加密和解密操作的实现比其他机制花费的时间长。
    

最后说一句(开个玩笑,娱乐下,你们看看就好,不要当真!):

如果你是天才,那么大胆去尝试设计算法!虽然失败的概率有99%,但是也要为了那 1% 而奋斗,万一成功了呢? 常人就算了,毕竟天才是不可复制的!