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

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

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

【 tulaoshi.com - 编程语言 】

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

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

(本文来源于图老师网站,更多请访问http://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加密答应解密。常用于文本内容的加密。

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

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


来源:http://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...
IBM的MARS加密算法实现(下) 作者:西安 吴真 IBM的MARS加密算法实现(上) 2.3 密文解密 用于密文解密的40个子密钥的生成和明文加密时的40个子密钥的生成方法相同. 2.3.1 第一步前向混合 输入的128位密文分成四块D[0],D[1],D[2],D[3],选取生成的40个密钥的最...
标签: 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...

经验教程

259

收藏

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