/////////////SHA单项加密
package com.security;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* SHA安全散列算法
* @author Administrator
*
*/
public class SecuritySHA {
/**
* md5加密
* @param s
* @return
*/
public static byte[] encrypt(String s)
{
try {
//根据MD5算法生成MessageDigest对象
MessageDigest md5 = MessageDigest.getInstance("SHA");
byte[] bytes = s.getBytes();
//使用bytes更新摘要
md5.update(bytes);
//完成哈希计算,得到result
byte[] resultBytes = md5.digest();
return resultBytes;
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
public String decryption(byte[] bytes)
{
return null;
}
public static String byte2hex(byte[] b) // 二进制转字符串
{
String hs="";
String stmp="";
for (int n=0;n<b.length;n++)
{
stmp=(java.lang.Integer.toHexString(b[n] & 0XFF));
if (stmp.length()==1) hs=hs+"0"+stmp;
else hs=hs+stmp;
//一般MD5加密是32位,如果加上以下这句就是47位了,以下这句没任何用,只是为了好看
//if (n<b.length-1) hs=hs+":";
}
return hs.toUpperCase();
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
byte[] result = SecurityMD5.encrypt("郭克华_安全编码技术");
byte[] result1 = SecurityMD5.encrypt("郭克华_安全编码技术");
System.out.println(result);
System.out.println(result1);
System.out.println(new String(result));
System.out.println(new String(result1));
System.out.println(SecurityMD5.byte2hex(result));
System.out.println(SecurityMD5.byte2hex(result1));
}
}
/////////MD5单项加密
package com.security;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* MD5加密
* @author Administrator
*
*/
public class SecurityMD5 {
/**
* md5加密
* @param s
* @return
*/
public static byte[] encrypt(String s)
{
try {
//根据MD5算法生成MessageDigest对象
MessageDigest md5 = MessageDigest.getInstance("MD5");
byte[] bytes = s.getBytes();
//使用bytes更新摘要
md5.update(bytes);
//完成哈希计算,得到result
byte[] resultBytes = md5.digest();
return resultBytes;
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
public String decryption(byte[] bytes)
{
return null;
}
public static String byte2hex(byte[] b) // 二行制转字符串
{
String hs="";
String stmp="";
for (int n=0;n<b.length;n++)
{
stmp=(java.lang.Integer.toHexString(b[n] & 0XFF));
if (stmp.length()==1) hs=hs+"0"+stmp;
else hs=hs+stmp;
if (n<b.length-1) hs=hs+":";
}
return hs.toUpperCase();
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
byte[] result = SecurityMD5.encrypt("sky");
byte[] result1 = SecurityMD5.encrypt("sky");
System.out.println(result);
System.out.println(result1);
System.out.println(new String(result));
System.out.println(new String(result1));
System.out.println(SecurityMD5.byte2hex(result));
System.out.println(SecurityMD5.byte2hex(result1));
}
}
/////////DES对称加密
package com.security;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.Security;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
/**
* DES是数据加密标准(Data Encryption Standard)的简称 //对称加密
* @author Administrator
*
*/
public class SecurityDES {
//KeyGenerator提供对称
private KeyGenerator keygen;
//SecretKey负责保存堆成密匙
private SecretKey deskey;
//Cipher负责完成加密和解密工作
private Cipher c;
//该字节数组负责保存加密的结果
private byte[] cipherByte;
public SecurityDES()
{
Security.addProvider(new com.sun.crypto.provider.SunJCE());
try {
//实例化支持DES算法的密匙生成器(算法名称需按规定,负责抛出异常)
keygen = KeyGenerator.getInstance("DES");
//生成密匙
deskey = keygen.generateKey();
//生成Cipher对象,指定其支持DES算法
c = Cipher.getInstance("DES");
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 对指定字符串加密
* @param str
* @return
*/
public byte[] createEncryptor(String str)
{
try {
//根据密匙,对Cipher对象进行初始化,ENCRYPT_MODE表示加密模式
c.init(Cipher.ENCRYPT_MODE, deskey);
byte[] src = str.getBytes();
//加密,结果保存进cipherByte
cipherByte = c.doFinal(src);
} catch (InvalidKeyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (BadPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return cipherByte;
}
public byte[] createDecryptor(byte[] buff)
{
try {
//根据密匙,对Cipher对象进行初始化,ENCRYPT_MODE 表示解密模式
c.init(Cipher.DECRYPT_MODE, deskey);
//得到明文,存入cipherByte字符数组
cipherByte = c.doFinal(buff);
} catch (InvalidKeyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (BadPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return cipherByte;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SecurityDES des = new SecurityDES();
String msg = "sky人皇";
System.out.println("明文:"+msg);
byte[] enc = des.createEncryptor(msg);
System.out.println("密文:"+new String(enc));
byte[] dec = des.createDecryptor(enc);
System.out.println("解密:"+new String(dec));
}
}
////////////3DES对称加密
package com.security;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.Security;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
/**
* 3DES 即三重DES,是DES的加强版 //对称加密
* @author Administrator
*
*/
public class Security3DES {
//KeyGenerator提供对称
private KeyGenerator keygen;
//SecretKey负责保存堆成密匙
private SecretKey deskey;
//Cipher负责完成加密和解密工作
private Cipher c;
//该字节数组负责保存加密的结果
private byte[] cipherByte;
public Security3DES()
{
Security.addProvider(new com.sun.crypto.provider.SunJCE());
try {
//实例化支持DES算法的密匙生成器(算法名称需按规定,负责抛出异常)
keygen = KeyGenerator.getInstance("DESede");
//生成密匙
deskey = keygen.generateKey();
//生成Cipher对象,指定其支持DES算法
c = Cipher.getInstance("DESede");
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 对指定字符串加密
* @param str
* @return
*/
public byte[] createEncryptor(String str)
{
try {
//根据密匙,对Cipher对象进行初始化,ENCRYPT_MODE表示加密模式
c.init(Cipher.ENCRYPT_MODE, deskey);
byte[] src = str.getBytes();
//加密,结果保存进cipherByte
cipherByte = c.doFinal(src);
} catch (InvalidKeyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (BadPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return cipherByte;
}
public byte[] createDecryptor(byte[] buff)
{
try {
//根据密匙,对Cipher对象进行初始化,ENCRYPT_MODE 表示解密模式
c.init(Cipher.DECRYPT_MODE, deskey);
//得到明文,存入cipherByte字符数组
cipherByte = c.doFinal(buff);
} catch (InvalidKeyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (BadPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return cipherByte;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SecurityDES des = new SecurityDES();
String msg = "sky人皇";
System.out.println("明文:"+msg);
byte[] enc = des.createEncryptor(msg);
System.out.println("密文:"+new String(enc));
byte[] dec = des.createDecryptor(enc);
System.out.println("解密:"+new String(dec));
}
}
////////////AES对称加密
package com.security;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.Security;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
/**
* AES 高级加密标准(Advanced Encryption Standard)的缩写 //对称加密
* @author Administrator
*
*/
public class SecurityAES {
//KeyGenerator提供对称
private KeyGenerator keygen;
//SecretKey负责保存堆成密匙
private SecretKey deskey;
//Cipher负责完成加密和解密工作
private Cipher c;
//该字节数组负责保存加密的结果
private byte[] cipherByte;
public SecurityAES()
{
Security.addProvider(new com.sun.crypto.provider.SunJCE());
try {
//实例化支持DES算法的密匙生成器(算法名称需按规定,负责抛出异常)
keygen = KeyGenerator.getInstance("AES");
//生成密匙
deskey = keygen.generateKey();
//生成Cipher对象,指定其支持DES算法
c = Cipher.getInstance("AES");
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 对指定字符串加密
* @param str
* @return
*/
public byte[] createEncryptor(String str)
{
try {
//根据密匙,对Cipher对象进行初始化,ENCRYPT_MODE表示加密模式
c.init(Cipher.ENCRYPT_MODE, deskey);
byte[] src = str.getBytes();
//加密,结果保存进cipherByte
cipherByte = c.doFinal(src);
} catch (InvalidKeyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (BadPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return cipherByte;
}
public byte[] createDecryptor(byte[] buff)
{
try {
//根据密匙,对Cipher对象进行初始化,ENCRYPT_MODE 表示解密模式
c.init(Cipher.DECRYPT_MODE, deskey);
//得到明文,存入cipherByte字符数组
cipherByte = c.doFinal(buff);
} catch (InvalidKeyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (BadPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return cipherByte;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SecurityDES des = new SecurityDES();
String msg = "sky人皇";
System.out.println("明文:"+msg);
byte[] enc = des.createEncryptor(msg);
System.out.println("密文:"+new String(enc));
byte[] dec = des.createDecryptor(enc);
System.out.println("解密:"+new String(dec));
}
}
分享到:
相关推荐
用于参数加密,api解密
使用java在服务端进行aes的加密解密,前端使用该js进行aes加密解密.
基于MATLAB的图像加密解密GUI(混沌加密解密,arnold加密解密。显示加密前后图像,灰度图。带解密GUI).zip基于MATLAB的图像加密解密GUI(混沌加密解密,arnold加密解密。显示加密前后图像,灰度图。带解密GUI).zip...
DES加密解密程序,VC源码值得学习借鉴
针对DSP应用程序的加密,解密,本文档给出了2种加密方法,1种解密方法,并详细的给出了加密解密的方法和步骤,供大家学习使用。
把源代码编译生成.dll组件后,可直接调用。在组件里面定义了DESencryDisencryption加密解密类,这个类公开了Key属性和DesEncrypt加密方法及DesDecrypt解密方法。方便实用,供大家学习。如有更好的方法,请与我联系。
c++的des 加密解密代码,vs2017编译通过,可打开debug目录下的exe,查看效果,适合参考与学习
VB字符串加密解密,形式简单,代码简洁,便于学习,输入需要加密的字符串后,点击“加密”即可,也可以点击“解密”还原。最后可以清屏。
摘要:VC/C++源码,加密解密,MD5,加密算法 VC++源代码写的用于md5加密算法的一个DLL组件源码,虽然是半成品,不过学习一下VC++中编写DLL也是不错的选择,另外还可以研究MD5加密算法具体实施代码。 运行环境:Windows/...
经过本人修改,简化并完善了别人的代码,使其更加的容易理解和学习! 此为一个完整的项目,...功能:服务端随机生成密钥,JS用公钥加密,服务端用私钥解密。用到的JS加密文件是从官网下载的最新版,速度快,稳定性好!
AES加密解密轮转算法工具,最大支持256bit长度的密钥,明文支持HEX和字串。可供学习设计参考。
学习RSA算法,读取数字证书中的私钥对文件进行加密,使用数字证书的公钥解密,这种方式就是RSA算法.
RSA加密解密算法源码,功能齐全,没有密码,使用方便,学习用.
一份非常不错的AES加密解密原理及算法学习的资料。所附源码经本人实测,完全无误。并且可移植性强,可移植到任意平台运行,从而为系统添加AES加密解密的功能。
JAVA+RSA的DEMO工程,适合初学者学习RSA加密解密 文档参看 http://blog.csdn.net/u013400939/article/details/44490441
加密解密文件程序,可加密大部分文件格式,用于学习加密解密算法,提供C#源代码,如有需要请下载。
C#实现加密解密软件,只用于学习使用...
CA资料,加密解密资料 想学习CA的朋友,绝对有用
这是一个Android平台上,有关RSA加密解密的学习教程,里面实现了简单的界面,能更直观的观察加密,和解密后的内容。