1. MD5加密,常用于加密用户名密码,当用户验证时。

protected byte[] encrypt(byte[] obj){ 
  try { 
  MessageDigest md5 = MessageDigest.getInstance("MD5"); 
  md5.update(obj); 
  return md5.digest(); 
  } catch (NoSuchAlgorithmException e){ 
  e.printStackTrace(); 
  } 
  }

  2. SHA加密,与MD5相似的用法,只是两者的算法不同。

protected byte[] encrypt(byte[] obj) { 
  try { 
  MessageDigest sha = MessageDigest.getInstance("SHA"); 
  sha.update(obj); 
  return sha.digest(); 
  } catch (NoSuchAlgorithmException e) { 
  e.printStackTrace(); 
  } 
  }

  3. RSA加密,RAS加密允许解密。常用于文本内容的加密。

import java.security.KeyPair;  
  import java.security.KeyPairGenerator;  
  import java.security.interfaces.RSAPrivateKey;  
  import java.security.interfaces.RSAPublicKey;  
  import javax.crypto.Cipher;  /** *//** 
  * RSAEncrypt 
  *  
  * @author maqujun 
  * @see 
  */ 
  public class RSAEncrypt { 
  /** *//** 
  * Main method for RSAEncrypt. 
  * @param args 
  */ 
  public static void main(String[] args) { 
  try ...{ 
  RSAEncrypt encrypt = new RSAEncrypt(); 
  String encryptText = "encryptText"; 
  KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA"); 
  keyPairGen.initialize(1024); 
  KeyPair keyPair = keyPairGen.generateKeyPair(); 
  // Generate keys 
  RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate(); 
  RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic(); 
  byte[] e = encrypt.encrypt(publicKey, encryptText.getBytes()); 
  byte[] de = encrypt.decrypt(privateKey,e); 
  System.out.println(encrypt.bytesToString(e)); 
  System.out.println(encrypt.bytesToString(de)); 
  } catch (Exception e) { 
  e.printStackTrace(); 
  } 
  } 
  /** *//** 
  * Change byte array to String. 
  * @return byte[] 
  */ 
  protected String bytesToString(byte[] encrytpByte) { 
  String result = ""; 
  for (Byte bytes : encrytpByte) { 
  result += (char) bytes.intValue(); 
  } 
  return result; 
  } 
  /** *//** 
  * Encrypt String. 
  * @return byte[] 
  */ 
  protected byte[] encrypt(RSAPublicKey publicKey, byte[] obj) { 
  if (publicKey != null) { 
  try ...{ 
  Cipher cipher = Cipher.getInstance("RSA"); 
  cipher.init(Cipher.ENCRYPT_MODE, publicKey); 
  return cipher.doFinal(obj); 
  } catch (Exception e) { 
  e.printStackTrace(); 
  } 
  } 
  return null; 
  } 
  /** *//** 
  * Basic decrypt method 
  * @return byte[] 
  */ 
  protected byte[] decrypt(RSAPrivateKey privateKey, byte[] obj){ 
  if (privateKey != null){ 
  try { 
  Cipher cipher = Cipher.getInstance("RSA"); 
  cipher.init(Cipher.DECRYPT_MODE, privateKey); 
  return cipher.doFinal(obj); 
  } catch (Exception e){ 
  e.printStackTrace(); 
  } 
  } 
  return null; 
  } 
  }

Java中常用的加密算法MD5,SHA,RSA的更多相关文章

  1. Java中常用的加密算法小结

      散列算法(单向散列,不可逆) MD5(Message Digest Algorithm 5) SHA(Secure Hash Algorithm)   对称加密(加密解密使用同一密钥,速度快) D ...

  2. Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC

    Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC 博客分类: Java/Security Javabase64macmd5sha     加密解密,曾经是我一 ...

  3. java中常用的工具类(一)

    我们java程序员在开发项目的是常常会用到一些工具类.今天我汇总了一下java中常用的工具方法.大家可以在项目中使用.可以收藏!加入IT江湖官方群:383126909 我们一起成长 一.String工 ...

  4. Java中常用的查找算法——顺序查找和二分查找

    Java中常用的查找算法——顺序查找和二分查找 神话丿小王子的博客 一.顺序查找: a) 原理:顺序查找就是按顺序从头到尾依次往下查找,找到数据,则提前结束查找,找不到便一直查找下去,直到数据最后一位 ...

  5. java中常用的工具类(三)

    继续分享java中常用的一些工具类.前两篇的文章中有人评论使用Apache 的lang包和IO包,或者Google的Guava库.后续的我会加上的!谢谢支持IT江湖 一.连接数据库的综合类       ...

  6. java中常用的工具类(二)

    下面继续分享java中常用的一些工具类,希望给大家带来帮助! 1.FtpUtil           Java   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

  7. Java中常用的运算符

    运算符是一种“功能”符号,用以通知 Java 进行相关的运算,Java 语言中常用的运算符可分为如下几种: 算数运算符.赋值运算符.比较运算符.逻辑运算符.条件运算符. 一.算数运算符 Java 中常 ...

  8. JAVA中常用需要设置的三个环境变量(JAVA_HOME、CLASSPATH、PATH)

    JAVA中常用需要设置的三个环境变量: JAVA_HOME.CLASSPATH.PATH (一) 配置环境变量:(相对路径) 1. JAVA_HOME=x:/jdk1.6.0 2. 用%JAVA_HO ...

  9. java中常用的字符串的截取方法

    java中常用的字符串的截取方法   1.length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int l ...

随机推荐

  1. Codeforces 1018D D. Order book

    解法:用l,r分别代表buy的最大值和sell的最小值,add时,若添加的值在l,r之间,则该值有可能作为下一次accept的值 accept x时,x只能在区间[l,r]中,否则无解,若x为l或r, ...

  2. Logger Rate Limiter -- LeetCode

    Design a logger system that receive stream of messages along with its timestamps, each message shoul ...

  3. 【bzoj2160】【啦啦队排练】manacher(马拉车)+差分+快速幂

    [pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=34562780 向大(hei)佬(e)势力学(di ...

  4. Mobius反演与积性函数前缀和演学习笔记 BZOJ 4176 Lucas的数论 SDOI 2015 约数个数和

    下文中所有讨论都在数论函数范围内开展. 数论函数指的是定义域为正整数域, 且值域为复数域的函数. 数论意义下的和式处理技巧 因子 \[ \sum_{d | n} a_d = \sum_{d | n} ...

  5. How to copy projects into workspace of eclipse after importing the project?

    在eclipse中如果已经导入了一个别处的项目但导入时没有选“copy projects into workspace”怎么办? 答案是删掉该项目重新导入... http://stackoverflo ...

  6. 如何使用Delphi编写Modbus RTU CRC16的校验码

    在工业控制中,Modbus RTU CRC16的校验码用的比较广泛,包括本人富士产品中,PC与伺服电机以及PC与VP系列的变频器的Modbus RTU通讯中都使用到了CRC16.     而对CRC1 ...

  7. Vue服务端渲染 VS Vue浏览器端渲染)

    Vue 2.0 开始支持服务端渲染的功能,所以本文章也是基于vue 2.0以上版本.网上对于服务端渲染的资料还是比较少,最经典的莫过于Vue作者尤雨溪大神的 vue-hacker-news.本人在公司 ...

  8. mtd-utils 工具的使用

    mtd_debug [root@xmos /root]# mtd_debugusage: mtd_debug info <device>       mtd_debug read < ...

  9. Python 面向对象三(转载)

    来源:Mr.Seven www.cnblogs.com/wupeiqi/p/4766801.html 四.类的特殊成员 上文介绍了Python的类成员以及成员修饰符,从而了解到类中有字段.方法和属性三 ...

  10. asp.net原理笔记----页面控件类型,页面状况和asp.net编译过程

    通过查看asp.net的整个生命周期之后 了解到在aspx的页面生命周期中 调用了BuildControlTree()方法生成页面控件树 之后再调用Rend()方法根据控件树生成html返回 aspx ...