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. 搭建负载均衡的环境(利用虚拟机上的四台centos)

    以下转载: 准备 l 系统:Centos6  (三台) l 负载均衡:LVS  + keepalived l 服务器1:Http l 服务器2:Http ip配置 1.VIP(virtual ip): ...

  2. HDU 6395 2018 Multi-University Training Contest 7 (快速幂+分块)

    原题地址 Sequence Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)T ...

  3. POJ3261 Milk Patterns(二分+后缀数组)

    题目求最长的重复k次可重叠子串. 与POJ1743同理. 二分枚举ans判定是否成立 height分组,如果大于等于ans的组里的个数大于等于k-1,这个ans就可行 #include<cstd ...

  4. mysql-essential-5.1.55-win32 安装

    1.选择无事物安装 2.my.cnf [mysqld] default-storage-engine=INNODB innodb=on 3.设置数据目录 手动创建目录 D:\data [mysqld] ...

  5. Go -- 卸载 Go

    直接删除usr下的go文件夹即可 命令行: cd / 1 然后: open usr 1 删除go文件夹

  6. pure-ftp 服务配置篇

    FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为 "文传协议" 用于Internet上的控制文件的双向传输. FTP的主要作用,就是让 ...

  7. java GC optimization, G1GC

    引用    http://www.avricot.com/blog/?post/2010/05/03/Get-started-with-java-JVM-memory-(heap%2C-stack%2 ...

  8. Java高级特性—消息队列

    1)什么是jms JMS即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API. 它便于消息系统中的Java应用程序进行消息 ...

  9. IO流(一)File类

    1.File类:表示文件和目录路径的抽象的表示形式,可以实现文件的创建,删除,重命名等,是唯一与文件本 有关的操作类. 2.File类的API定义:public class File extends ...

  10. hibernate学习系列-----(4)hibernate基本查询上篇:HQL基本查询

    紧接着上一篇,今天继续hibernate的学习总结,来聊一聊hibernate的基本查询方法,先说说HQL(hibernate Query Language):它是官方推荐的查询语言.在开始写代码之前 ...