Java中常用的加密算法应用MD5SHA,RSA

2016-02-19 20:03 8 1 收藏

关注图老师设计创意栏目可以让大家能更好的了解电脑,知道有关于电脑的更多有趣教程,今天给大家分享Java中常用的加密算法应用MD5SHA,RSA教程,希望对大家能有一点小小的帮助。

【 tulaoshi.com - 编程语言 】

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  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;
  /** *//**
   * bRSAEncrypt/b
   * p
   * @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;
      }
  }


来源:https://www.tulaoshi.com/n/20160219/1622612.html

延伸阅读
添加要签名的信息 public final byte[] sign() throws SignatureException 返回签名的数组,前提是initSign和update public final void initVerify(PublicKey publicKey) throws InvalidKeyException 用指定的公钥初始化 参数:publicKey 验证时用的公钥 public final boolean verify(byte[]...
1  RSA算法的原理如下: 1.1原理      假设我们需要将信息从机器A传到机器B,首先由机器B随机确定一个Key,我们称之为密匙private_key,将这个可KEY始终保存在机器B中而不发出来;然后,由这个private_key计算出另一个Key,我们称之为公匙Public_key。这个Public_key的特性是几乎不可能通过该K...
标签: PHP
本文将介绍一个简单易用的加密/解密算法:使用异或( XOR )运算。本算法原理简单,旨在使读者对信息的加密/解密有一个更加直观的印象。 XOR算法原理 从加密的主要方法看,换位法过于简单,特别是对于数据量少的情况很容易由密文猜出明文,而替换法不失为一种行之有效的简易算法。 从各种替换法运算的特点看,...
标签: ASP
  简介 首先简单介绍一下有关加密的背景。由于美国禁止几种密码算法的对外出口的 加密位数(例如SSL的40位加密限制),本文将介绍一种ASP可以使用的简单字符加密算法, 而不是那些受限制的加密算法。其实,这里介绍的加密算法对于一般的运用来说已经足够 解密人麻烦一阵子的了。它的加密基础是最简单的Vernum密码方法,我...
标签: ASP
  在第一部分,讨论了如何生成密钥,下面将介绍如何使用这个密钥来加密和解密一个 字符串。 下面的代码就是能够同时实现这个功能的函数 Crypt.asp文件 <% Dim g_Key Const g_CryptThis = "Now is the time for all good men to come to the aid of their country." Const g_KeyLocati...

经验教程

349

收藏

56
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部