几种加密算法的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("����"));
}
}
几种加密算法的java实现包括MD5、RSA、SHA256的更多相关文章
- Java BASE58 以及 md5,sha256,sha1
package cn.ubibi.wsblog.utils; import java.io.UnsupportedEncodingException; import java.math.BigInte ...
- 常用加密算法的Java实现(一) ——单向加密算法MD5和SHA
1.Java的安全体系架构 1.1 Java的安全体系架构介绍 Java中为安全框架提供类和接口.JDK 安全 API 是 Java 编程语言的核心 API,位于 java.sec ...
- 本篇内容简要介绍BASE64、MD5、SHA、HMAC几种加密算法。
BASE64编码算法不算是真正的加密算法. MD5.SHA.HMAC这三种加密算法,可谓是非可逆加密,就是不可解密的加密方法,我们称之为单向加密算法.我们通常只把他们作为加密的基础.单纯的以上 ...
- MD5加密算法(java及js)
为了防止用户登陆过程中信息被拦截导致信息泄露,我们应该在客户端就对用户密码进行加密.浏览器提交给服务器的是加密后的信息,即使被恶意拦截,被拦截信息也已做了加密处理,现在比较安全的一种加密算法是MD5加 ...
- BASE64、MD5、SHA、HMAC几种加密算法
本篇内容简要介绍BASE64.MD5.SHA.HMAC几种加密算法. BASE64编码算法不算是真正的加密算法. MD5.SHA.HMAC这三种加密算法,可谓是非可逆加密,就是不可解密的加 ...
- Java MD5和SHA256等常用加密算法
前言 我们在做java项目开发的时候,在前后端接口分离模式下,接口信息需要加密处理,做签名认证,还有在用户登录信息密码等也都需要数据加密.信息加密是现在几乎所有项目都需要用到的技术,身份认证.单点登陆 ...
- MD5加密算法的Java版本
网上搜索Java实现MD5的资料很多,错误的也很多. 之前编写的一个阿里云直播鉴权原理算法需要用到MD5算法,网上找了几个,都是不行,浪费了时间,现在贴一个,做备用. import java.secu ...
- [转]MD5加密算法的java实现
import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /* * MD5 算法 */ pu ...
- MD5加密算法的java实现
package other; import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;/* * ...
随机推荐
- 利用python web框架django实现py-faster-rcnn demo实例
操作系统.编程环境及其他: window7 cpu python2.7 pycharm5.0 django1.8x 说明:本blog是上一篇blog(http://www.cnblogs.co ...
- memcache调整value大小限制
> *事件背景: 当Redis有问题时按预案就会切换到本机memcache,但是我们首页 key:value现 在是1.5M同时memcache item限制是1M,导致首页写入memcache ...
- CS:APP3e 深入理解计算机系统_3e CacheLab实验
详细的题目要求和资源可以到 http://csapp.cs.cmu.edu/3e/labs.html 或者 http://www.cs.cmu.edu/~./213/schedule.html 获取. ...
- springboot学习(三)——http序列化/反序列化之HttpMessageConverter
以下内容,如有问题,烦请指出,谢谢! 上一篇说掉了点内容,这里补上,那就是springmvc的http的序列化/反序列化,这里简单说下如何在springboot中使用这个功能. 使用过原生netty ...
- 探索版 webstorm快捷方式
ctrl + alt + s 打开配置面板 Settings 国内的资料比较少,大概很多人已经放弃了原生快捷方式,不过我打算通关原生快捷方式. 在配置面板中 IDE S ...
- 腾讯qq等级计算公式面试题
就三道题大概是: 1. 推算出等级相应的天数 这个还比較简单,公式是:(b=2a+3) a是等级, b是相应的天数 2. 推算出等级总共的天数 先看下规律 等级a 相应天数b 总天数s 1 5 5 ...
- Ration Rose2003安装及破解
曾经学习UML的时候,用的是EA. 近期在看Head First想着画绘图装一下Ration Rose吧.于是就着手開始装.本来网上关于Ration Rose的安装及破解教程非常多,可是我在安装的过程 ...
- 苹果新的编程语言 Swift 语言进阶(三)--基本运算和扩展运算
一 基本操作运算 1. 赋值操作 在Swift 中,能够使用赋值操作为一个常量或一个变量赋值,也能够使用多元组一次为多个常量或变量赋值. Swift 的赋值操作与其他语言最大的不同是赋值操作除了可以为 ...
- this问题
this问题 弹出层是一种很常见的页面显示部件,利用require js的模块化可以使部分功能组件重用性更高.以弹出层为例,探讨关于this的问题 首先来看这样一段代码 Html部分代码 <bo ...
- 在java项目中加入百度富文本编辑器
富文本编辑器在项目中很常见,他可以将文本,图片等信息存入数据库,在编辑一些图文混排的信息的时候很有用,比如商城项目的商品详情页,包含很多带有样式的文字和图片. 此前一直使用的百度的富文本编辑器uedi ...