几种JAVA加密算法

news/2024/7/7 20:59:29

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; 
  } 
  }


http://www.niftyadmin.cn/n/3959846.html

相关文章

Asky极简教程:零基础1小时学编程(已更新前8节)

Asky极简架构 开源Asky极简架构、超轻量级、高并发、水平扩展、微服务架构 《Asky极简教程:零基础1小时学编程》开源教程 零基础入门,从零开始全程演示,如何开发一个大型互联网系统,开源教程 开源代码 开源解决方案零基础1小时学…

[算法]两数之和,三数之和

1. 两数之和 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。 示例: 给定 nums [2, 7, 11, 15], target 9因为 nums[0] nums[1] 2 7 9 所以返回 [0, 1] LeetCode&am…

Qt(Mac) 进程的启动

试了半天,终于成功了!!!!(教程都是Windows的) 1.与Windows不一样,Mac的要在了路径前加上open; 2.例 图为把一个按钮与TextEdit程序进程联系,点击后就可以启动…

Hibernate的三种连接池设置C3P0、Proxool和DBCP

Xml代码 <!-- JDBC驱动程序 --> <property name"connection.driver_class">com.mysql.jdbc.Driver</property> <property name"connection.url">jdbc:mysql://localhost:3306/struts?useUnicodetrue&characterEncodingGBK&l…

ALGO-151_蓝桥杯_算法训练_6-2递归求二进制表示位数

记: 进制转换 AC代码: 1 #include <stdio.h>2 #define K 23 4 int main(void)5 {6 int n,ans 0;7 scanf("%d",&n);8 while (1)9 { 10 if (n/K 0 && n%K 0) 11 { 12 break; 13 } 14 …

尝试在代码中动态切换spring的事务策略

用过spring的人都熟悉spring的事务管理机制&#xff0c;并且spring支持jta分布式事务&#xff0c;那么&#xff0c;我一直在想&#xff0c;能否在代码中动态的切换事务类型呢&#xff1f;如果当前要操作的多个表在同一个数据源上&#xff0c;就直接本地 事务好了&#xff0c;如…

51NOD 1833 环

考虑一下简单环覆盖这个图的意义&#xff0c;其实就是找出原序列的所有排列&#xff0c;满足所有<i,a[i]>都是原图中的一条有向边。 因为一个置换就是由很多简单环构成的。 于是我们可以设 f[i][S] 为考虑了前i个点的出边&#xff0c;且有入度的点集为S的方案数。 直接dp…

java开发之netty里集成spring注入mysq连接池(一)

netty的性能非常高&#xff0c;能达到8000rps以上&#xff0c;见 各个web服务器的性能对比测试 1.准备好需要的jar包 点击(此处)折叠或打开 spring.jar //spring包 netty-3.2.4.Final.jar // netty库 commons-dbcp.jar // dbcp数据库连接池 mysql-connector-java-5.1.6.jar /…