几种加密算法的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;/* * ...
随机推荐
- tomcat警告setting property 'debug' to '0' did not find a matching property
在使用tomcat6.0版本结合myeclipse进行java web项目,运行程序显示setting property 'debug' to '0' did not find a matching ...
- codeforces 893C Rumor 前向星+dfs
893C Rumor 思路: 前向星+DFS 代码: #include <bits/stdc++.h> using namespace std; #define _for(i,a,b) f ...
- Eclipse Maven Mybatis的使用
关于maven的使用网上有太多教程,这里就不再介绍.本篇文章只用来记录 在Eclipse中使用maven创建含有mybatis的程序的配置,及注意事项. 使用Eclipse创建Maven项目 创建后的 ...
- models中的pk主键用法
class FrontUserModel(models.Model): uid = models.UUIDField(primary_key=True,default=uuid.uuid4) emai ...
- Linux安装Nginx以及简单理解
1.Nginx简单介绍 ①.Nginx:一个高性能的HTTP和反向代理服务器,高并发处理很不错. ②.反向代理:在计算机世界里,由于单个服务器的处理客户端(用户)请求能力有一个极限,当用户的接入请求蜂 ...
- 刚在在win8.1下装了ubuntu12.04
这是一个開始. 開始我想在win7下,由于我本来是7和win8.1双系统,想直接把win7覆盖了. 可是不知道怎么回事,比較复杂.于是在win8.1下装了. 先把win7的系统盘格式化了. 把下的is ...
- 使用Mybatis-Generator自己主动生成Dao、Model、Mapping相关文件
准备工作: 1.数据库驱动程序 2.generatorConfig驱动,(下载地址:https://github.com/mybatis/generator/releases) 3.generator ...
- Cocos2d-x 3.0正式版及android环境搭建
开发环境是:mac + xcode + eclipse ,在win以下的环境和这个都是一样的,唯一不一样的就是环境变量的配置. 以下主要介绍cocos2d-x环境的设置以及android的环境搭建 1 ...
- git 操作问题
clone远程版本号库的时候,报错,提示路径不正确. 之前输入的路径为:ssh://[ip]:[port号]/[数据库名称] 增加username后的路径:ssh://[username]@[ip]: ...
- SYSAUX表空间使用率高问题处理
SYSAUX表空间做为SYSTEM表空间的辅助表空间,主要存放EM相关的内容以及表统计信息,AWR快照,审计信息等,而假设SYSAUX表空间在默认条件下你假设不做不论什么配置,随着时间的推移.会膨胀的 ...