java sha256 实现_几种加密算法的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("����"));

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值