java中的加密解密

原创 2015年11月20日 10:49:12

几年前总结的了,搬到这儿来吧。。。


  1. 单向加密(信息摘要)---用来验证文件是否被修改
    • 说白了就是通过明文生成一个16进制字符串的密文,不可逆,只是对原始对象生成摘要信息.
    • 加密算法: "MD2""MD5""SHA1""SHA-256""SHA-384""SHA-512"
    • String a="abc";
      MessageDigest md=MessageDigest.getInstance("MD5");
      byte[] bi=a.getBytes();
      md.update(bi);
      System.out.println("字符:"+a+",摘要:"+new String(md.digest()));
  2. 双向加密---一般用来验证个人或者机构,也可以用来验证文件是否被修改
    • 双向加密大体意思就是明文加密后形成密文,可以通过算法还原成明文.
    1. 对称加密
      • 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。
      • 算法是一组规则,规定如何进行加密和解密。因此对称式加密本身不是安全的。
      • 常用的对称加密有:DES、IDEA、RC2、RC4、SKIPJACK、RC5、AES算法等
      • 解密时要用Cipher cipher=Cipher.getInstance("DES");构造方法新生成一个Cipher,否则会报错
      • String b="def";
        System.out.println("字符串:"+b);
        KeyGenerator keyg=KeyGenerator.getInstance("DES");//KEY生成器
        SecretKey key=keyg.generateKey();//密钥
        Cipher c=Cipher.getInstance("DES");//加密解密类
        c.init(Cipher.ENCRYPT_MODE, key);//加密或者解密初始化
        String enstr=new String(c.doFinal(b.getBytes()));//加密
        System.out.println("加密了...:"+enstr);
        System.out.println(".....");
        Cipher d=Cipher.getInstance("DES");
        d.init(Cipher.DECRYPT_MODE, key);//解密初始化
        System.out.println("解密了..."+new String(d.doFinal(enstr.getBytes())));
    2. 非对称加密
      • 非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥 (privatekey)。
      • 公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 
      • RSA 公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
        • String me="abcd";
          System.out.println("明文是:" + me);
          KeyPairGenerator kpg=KeyPairGenerator.getInstance("RSA");
          KeyPair kp =kpg.generateKeyPair();
          RSAPublicKey rpubk=(RSAPublicKey)kp.getPublic();
          RSAPrivateKey rprik=(RSAPrivateKey)kp.getPrivate();
          Cipher c=Cipher.getInstance("RSA");
          c.init(Cipher.ENCRYPT_MODE,rpubk);
          byte[] enstr = c.doFinal(me.getBytes());
          String str =new String(enstr);
          System.out.println("加密后是:" + str);
          Cipher d=Cipher.getInstance("RSA");
          d.init(Cipher.DECRYPT_MODE,rprik);
          System.out.println("解密后是:" + new String(d.doFinal(enstr)));
      • Digital Signature Algorithm (DSA)是Schnorr和ElGamal签名算法的变种,被美国NIST作为DSS(DigitalSignature Standard)。
        • DSA是基于整数有限域离散对数难题的,其安全性与RSA相比差不多。DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,你也能确认它们是否是随机产生的,还是作了手脚。RSA算法却做不到。

版权声明:除了标记为原创文章以外,其他均为转载,并在正文开头标注了原文地址,如有侵权请告知删除。原创文章可随意转载。

Java加密解密全解

1 sha加密: 安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital...
  • sinat_29581293
  • sinat_29581293
  • 2016年08月05日 11:31
  • 15624

Java加密和解密

概述: 出于安全考虑,网络的传输中经常对传输数据做加密和编码处理,其中涉及以下几种: 1、md5加密,该加密算法是单向加密,即加密的数据不能再通过解密还原。相关类包含在java.securi...
  • xiadaoceshen
  • xiadaoceshen
  • 2013年01月04日 14:27
  • 28161

JAVA实现AES加密和解密

经过三周的不懈努力,终于完成了AES对文件的加密和解密。现在将自己的学习经历记下来,纪念自己三周的付出。同时也感谢网上的各位大神的博客。 AES对文件加密和解密以及打包的工具:http://downl...
  • xiaaiwu
  • xiaaiwu
  • 2015年01月15日 20:21
  • 3032

java 对字符串的加密解密

import java.security.Key; import java.security.spec.AlgorithmParameterSpec; import javax.crypto.Cip...
  • shuai825644975
  • shuai825644975
  • 2017年05月12日 15:15
  • 2198

Java的MD5加密和解密类

理解MD5 MD5的应用非常广泛。例如我们在unix中下载某种软件时,常常会看到一个扩展名为.md5的文件,内容大概是: MD5 (tanajiya.tar.gz) = 0ca175b9c0f72...
  • shuangshuang37278752
  • shuangshuang37278752
  • 2013年04月12日 20:39
  • 12849

JAVA加密C++解密简单方法

java加密C++解密:【key可以随机生成】需要KEY需要一样(如果需要更为复杂的加密可以在加密器初始化是传入一个盐值,具体实现方法可以网上搜很多),java加密的填充方式 和C++解密填充方式要一...
  • u013604031
  • u013604031
  • 2015年11月16日 16:10
  • 1131

RSA加解密算法java实现(已添加分段加密算法处理)

一 RSA简介 这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和L...
  • u011991249
  • u011991249
  • 2016年04月09日 18:39
  • 3524

AES加密解密——AES在JavaWeb项目中前台JS加密,后台Java解密的使用

传输数据的时候使用数据的原始内容进行传输的话,安全隐患是非常大的。因此就要对需要传输的数据进行在客户端进行加密,然后在服务器进行解密! (精读阅读本篇可能花费您10分...
  • u010648555
  • u010648555
  • 2017年03月29日 16:38
  • 6012

Java实现MD5加密与解密

我用到的md5是用来做登录注册页面输入密码后,存储加密后的密码到数据库保密用的。觉得简单好用所以放到上面来供大家以前学习使用,这个并不需要导入外部的包喔。 import java.securit...
  • wwz95
  • wwz95
  • 2017年11月13日 21:28
  • 233

java-RSA加密解密,支持分段加解密

java-RSA加密解密,支持分段加解密 RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adlem...
  • xxj_jing
  • xxj_jing
  • 2017年06月12日 16:58
  • 956
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java中的加密解密
举报原因:
原因补充:

(最多只允许输入30个字)