zoukankan      html  css  js  c++  java
  • 几种加密算法的java实现包括MD5、RSA、SHA256

    SHA加密:

    package com;

    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    /**
    * 对外提供getSHA(String str)方法
    * @author randyjia
    *
    */
    public class SHA {
    public static String Encrypt(String strSrc, String encName) {
    MessageDigest md = null;
    StringBuilder sb = new StringBuilder();

    byte[] bt = strSrc.getBytes();
    try {
    md = MessageDigest.getInstance(encName);
    byte[] result = md.digest(bt);
    for (byte b : result) {
    sb.append(String.format("%02x", b));
    }
    } catch (NoSuchAlgorithmException e) {
    return null;
    }
    return sb.toString();
    }


    public static void main(String args[]){
    String s = SHA.Encrypt("12345", "SHA-256");
    System.out.println(s);

    }
    }

    RSA加密:

    package com;

    import java.io.*;
    import java.security.*;

    import javax.crypto.*;
    import java.security.spec.X509EncodedKeySpec;
    import java.security.spec.PKCS8EncodedKeySpec;
    import sun.misc.*;

    public class Rsa_test {
    private KeyPairGenerator kpg = null;
    private KeyPair kp = null;
    private PublicKey public_key = null;
    private PrivateKey private_key = null;

    public Rsa_test(int in, String address) throws NoSuchAlgorithmException,
    FileNotFoundException, IOException
    {
    kpg = KeyPairGenerator.getInstance("RSA");
    kpg.initialize(in);
    kp = kpg.genKeyPair();
    public_key = kp.getPublic();
    private_key = kp.getPrivate();

    sun.misc.BASE64Encoder b64 = new sun.misc.BASE64Encoder();
    String pkStr = b64.encode(public_key.getEncoded());
    String prStr = b64.encode(private_key.getEncoded());
    System.out.print("pkStr length:" +pkStr.length()+" "+pkStr);

    FileWriter fw=new FileWriter(address + "/private_key.dat");
    fw.write(prStr);
    fw.close();

    FileWriter fw2 = new FileWriter(address + "/public_key.dat");
    fw2.write(pkStr);
    fw2.close();
    }



    private static String encrypt(String source) throws Exception{

    FileReader fr = new FileReader("E://public_key.dat");
    BufferedReader br=new BufferedReader(fr);
    String getPbKey = "";
    while(true){
    String aLine = br.readLine();
    if(aLine==null)break;
    getPbKey += aLine;
    }
    System.out.println( "myBuilderStr : length: " + getPbKey.length() +" "+getPbKey );
    BASE64Decoder b64d = new BASE64Decoder();
    byte [] keyByte = b64d.decodeBuffer(getPbKey);
    X509EncodedKeySpec x509ek = new X509EncodedKeySpec(keyByte);
    KeyFactory keyFactory = KeyFactory.getInstance("RSA");
    PublicKey publicKey = keyFactory.generatePublic(x509ek);

    Cipher cipher = Cipher.getInstance("RSA");
    cipher.init(Cipher.ENCRYPT_MODE,publicKey);
    byte[] sbt = source.getBytes();
    byte [] epByte = cipher.doFinal(sbt);
    BASE64Encoder encoder = new BASE64Encoder();
    String epStr = encoder.encode(epByte);
    return epStr;

    }


    public static String decrypt(String cryptograph) throws Exception{

    FileReader fr = new FileReader("E://private_key.dat");
    BufferedReader br=new BufferedReader(fr);
    String getPvKey = "";
    while(true){
    String aLine = br.readLine();
    if(aLine==null)break;
    getPvKey += aLine;
    }
    BASE64Decoder b64d = new BASE64Decoder();
    byte [] keyByte = b64d.decodeBuffer(getPvKey);
    PKCS8EncodedKeySpec s8ek = new PKCS8EncodedKeySpec(keyByte);
    KeyFactory keyFactory = KeyFactory.getInstance("RSA");
    PrivateKey privateKey = keyFactory.generatePrivate(s8ek);



    Cipher cipher = Cipher.getInstance("RSA");
    cipher.init(Cipher.DECRYPT_MODE, privateKey);
    BASE64Decoder decoder = new BASE64Decoder();
    byte[] b1 = decoder.decodeBuffer(cryptograph);
    byte[] b = cipher.doFinal(b1);
    return new String(b);
    }

    /*
    public static void main(String[] args) {
    try {
    new Rsa_test(1024, "E:/"); 
    System.out.println("");
    String getEptStr = encrypt("wuchao");
    System.out.println("getEptStr:"+getEptStr);
    String drpStr = decrypt(getEptStr);
    System.out.println("drpStr:"+drpStr);
    }
    catch (IOException ex) {
    ex.printStackTrace();
    }
    catch (NoSuchAlgorithmException ex) {
    ex.printStackTrace();
    }catch(Exception ex){
    ex.printStackTrace();
    }

    }
    */

    }

    MD5加密:

    package com;

    import java.security.MessageDigest;

    public class Md5 {

    public final static String MD5(String s) {
    char hexDigits[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    try {
    byte[] btInput = s.getBytes();
    MessageDigest mdInst = MessageDigest.getInstance("MD5");
    mdInst.update(btInput);
    byte[] md = mdInst.digest();
    int j = md.length;
    char str[] = new char[j * 2];
    int k = 0;
    for (int i = 0; i < j; i++) {
    byte byte0 = md[i];
    str[k++] = hexDigits[byte0 >>> 4 & 0xf];
    str[k++] = hexDigits[byte0 & 0xf];
    }
    return new String(str);
    } catch (Exception e) {
    e.printStackTrace();
    return null;
    }
    }
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.println(Md5.MD5("20121221asfasfasfa"));
    System.out.println(Md5.MD5("����"));
    }

    }

  • 相关阅读:
    源码解析之–网络层YTKNetwork
    ARC和非ARC文件混编
    Xcode真机调试中"There was an internal API error"错误解决方法
    设置textView或者label的行间距方法
    iOS中__block 关键字的底层实现原理
    使用AVCaptureSession捕捉静态图片
    使用AVCaptureSession显示相机预览
    短小强悍的JavaScript异步调用库
    开源中国愚人节网页变模糊的js blur代码
    undefined与null的区别
  • 原文地址:https://www.cnblogs.com/earendil/p/4234696.html
Copyright © 2011-2022 走看看