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("����"));
}

}

几种加密算法的java实现包括MD5、RSA、SHA256的更多相关文章

  1. Java BASE58 以及 md5,sha256,sha1

    package cn.ubibi.wsblog.utils; import java.io.UnsupportedEncodingException; import java.math.BigInte ...

  2. 常用加密算法的Java实现(一) ——单向加密算法MD5和SHA

    1.Java的安全体系架构 1.1           Java的安全体系架构介绍 Java中为安全框架提供类和接口.JDK 安全 API 是 Java 编程语言的核心 API,位于 java.sec ...

  3. 本篇内容简要介绍BASE64、MD5、SHA、HMAC几种加密算法。

    BASE64编码算法不算是真正的加密算法.     MD5.SHA.HMAC这三种加密算法,可谓是非可逆加密,就是不可解密的加密方法,我们称之为单向加密算法.我们通常只把他们作为加密的基础.单纯的以上 ...

  4. MD5加密算法(java及js)

    为了防止用户登陆过程中信息被拦截导致信息泄露,我们应该在客户端就对用户密码进行加密.浏览器提交给服务器的是加密后的信息,即使被恶意拦截,被拦截信息也已做了加密处理,现在比较安全的一种加密算法是MD5加 ...

  5. BASE64、MD5、SHA、HMAC几种加密算法

    本篇内容简要介绍BASE64.MD5.SHA.HMAC几种加密算法.    BASE64编码算法不算是真正的加密算法.    MD5.SHA.HMAC这三种加密算法,可谓是非可逆加密,就是不可解密的加 ...

  6. Java MD5和SHA256等常用加密算法

    前言 我们在做java项目开发的时候,在前后端接口分离模式下,接口信息需要加密处理,做签名认证,还有在用户登录信息密码等也都需要数据加密.信息加密是现在几乎所有项目都需要用到的技术,身份认证.单点登陆 ...

  7. MD5加密算法的Java版本

    网上搜索Java实现MD5的资料很多,错误的也很多. 之前编写的一个阿里云直播鉴权原理算法需要用到MD5算法,网上找了几个,都是不行,浪费了时间,现在贴一个,做备用. import java.secu ...

  8. [转]MD5加密算法的java实现

    import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /* * MD5 算法 */ pu ...

  9. MD5加密算法的java实现

    package other; import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;/* * ...

随机推荐

  1. 利用python web框架django实现py-faster-rcnn demo实例

    操作系统.编程环境及其他: window7  cpu  python2.7  pycharm5.0  django1.8x 说明:本blog是上一篇blog(http://www.cnblogs.co ...

  2. memcache调整value大小限制

    > *事件背景: 当Redis有问题时按预案就会切换到本机memcache,但是我们首页 key:value现 在是1.5M同时memcache item限制是1M,导致首页写入memcache ...

  3. CS:APP3e 深入理解计算机系统_3e CacheLab实验

    详细的题目要求和资源可以到 http://csapp.cs.cmu.edu/3e/labs.html 或者 http://www.cs.cmu.edu/~./213/schedule.html 获取. ...

  4. springboot学习(三)——http序列化/反序列化之HttpMessageConverter

    以下内容,如有问题,烦请指出,谢谢! 上一篇说掉了点内容,这里补上,那就是springmvc的http的序列化/反序列化,这里简单说下如何在springboot中使用这个功能. 使用过原生netty ...

  5. 探索版 webstorm快捷方式

    ctrl + alt + s            打开配置面板 Settings   国内的资料比较少,大概很多人已经放弃了原生快捷方式,不过我打算通关原生快捷方式.   在配置面板中  IDE S ...

  6. 腾讯qq等级计算公式面试题

    就三道题大概是: 1. 推算出等级相应的天数 这个还比較简单,公式是:(b=2a+3)   a是等级, b是相应的天数 2. 推算出等级总共的天数 先看下规律 等级a 相应天数b 总天数s 1 5 5 ...

  7. Ration Rose2003安装及破解

    曾经学习UML的时候,用的是EA. 近期在看Head First想着画绘图装一下Ration Rose吧.于是就着手開始装.本来网上关于Ration Rose的安装及破解教程非常多,可是我在安装的过程 ...

  8. 苹果新的编程语言 Swift 语言进阶(三)--基本运算和扩展运算

    一 基本操作运算 1. 赋值操作 在Swift 中,能够使用赋值操作为一个常量或一个变量赋值,也能够使用多元组一次为多个常量或变量赋值. Swift 的赋值操作与其他语言最大的不同是赋值操作除了可以为 ...

  9. this问题

    this问题 弹出层是一种很常见的页面显示部件,利用require js的模块化可以使部分功能组件重用性更高.以弹出层为例,探讨关于this的问题 首先来看这样一段代码 Html部分代码 <bo ...

  10. 在java项目中加入百度富文本编辑器

    富文本编辑器在项目中很常见,他可以将文本,图片等信息存入数据库,在编辑一些图文混排的信息的时候很有用,比如商城项目的商品详情页,包含很多带有样式的文字和图片. 此前一直使用的百度的富文本编辑器uedi ...