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. 洛谷——P1067 多项式输出

    P1067 多项式输出 题目描述 一元 n 次多项式可用如下的表达式表示: 其中,aixi称为 i 次项,ai 称为 i 次项的系数.给出一个一元多项式各项的次数和系数,请按照如下规定的格式要求输出该 ...

  2. JAVA基础加强(张孝祥)_类加载器、分析代理类的作用与原理及AOP概念、分析JVM动态生成的类、实现类似Spring的可配置的AOP框架

    1.类加载器 ·简要介绍什么是类加载器,和类加载器的作用 ·Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个类负责加载特定位置的类:BootStrap,ExtClassLoader ...

  3. ARC 098 D - Xor Sum 2

    Problem Statement There is an integer sequence A of length N. Find the number of the pairs of intege ...

  4. [LOJ6280]数列分块入门 4

    题目大意: 给你一个长度为$n(n\leq50000)$的序列$A$,支持进行以下两种操作:​ 1.将区间$[l,r]$中所有数加上$c$: 2.询问区间$[l,r]$在模$c+1$意义下的和.思路: ...

  5. Map泛型集合-显示企鹅信息

    package collection; /** * 宠物类 * @author * */ public class Pet { private String name; private String ...

  6. [置顶] kubernetes--应用程序健康检查

    K8S的应用程序健康检查分为livenessProbe和readinessProbe,两者相似,但两者存在着一些区别. livenessProbe在服务运行过程中检查应用程序是否运行正常,不正常将杀掉 ...

  7. react数组key的唯一性

    1.不要使用数组的index索引作为key 2.在相邻的元素间,一定确保key的唯一性,如果出现了相同的 key,会抛出一个 Warning,告诉相邻组件间有重复的 key 值.并且只会渲染第一个重复 ...

  8. 关于#include文件包含

    1.对于函数头文件: #include <filename> 一般对于标准库文件以一个.h后缀结尾: 2.对于本地文件: #include "filename.h" 对 ...

  9. Jsp中如何在<c:forEach>标签内获取集合的长度

    利用jstl标签functions的prefix属性的length属性值 1.首先在jsp页面导入jstl function标签 <%@ taglib prefix="fn" ...

  10. redis打开非英文存储显示问题

    使用jedis 在redis中如果存储非英文的值,入 中文,印地语,马拉蒂语,泰米尔语等.在执行get 或者 hget的时候查询出来的数据会以16进制显示.如何显示原有的值 在redis启动的时候加上 ...