/////////////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));
}
}
分享到:
相关推荐
总的来说,这个资源包提供了从理论到实践的加密解密学习材料,涵盖了多种编程语言,适合于希望深入理解和应用加密技术的开发者。无论是初学者还是有经验的程序员,都能从中受益,提升在信息安全领域的技能。
总的来说,这份【加密解密2】配套光盘是一个全面的DELPHI加密解密学习资源,适合那些希望增强其应用程序安全性的DELPHI开发者,或者是对计算机安全感兴趣的个人。通过这份资源,开发者可以学习到如何在实际项目中...
用于参数加密,api解密
这个程序应当包含了上述知识点的具体应用,你可以通过阅读源代码、编译和运行来进一步理解和学习AES加密解密的实现细节。这个实战例程可以帮助开发者更好地掌握Qt环境下的加密解密操作,提高数据安全保护能力。
使用java在服务端进行aes的加密解密,前端使用该js进行aes加密解密.
这个"文件加密解密(完整项目)"提供了一个可以直接编译运行的解决方案,对于学习和实践C#文件加密技术具有很高的参考价值。通过理解和实践该项目,开发者可以深入理解加密解密原理,提升数据保护能力。
通过易语言的TEA加密解密源码,我们可以学习到如何在实际编程环境中应用这种加密算法。同时,源码也可以帮助我们深入理解加密算法的内部工作机制,这对于网络安全、数据保护以及密码学的学习都是非常有价值的。 ...
在IT领域,加密和解密是信息安全的重要组成部分,特别是在数据传输、...通过学习和实践,你可以创建自己的加密解密工具,为数据安全提供保障。在实际项目中,结合现代密码学理论,可以构建更安全、高效的数据保护系统。
本实例将聚焦于JAVA数据加密解密的实践应用。 首先,让我们理解加密和解密的基本概念。加密是一种将明文(可读信息)转化为密文(不可读信息)的过程,以保护数据不被未经授权的用户访问。解密则是加密的逆过程,将...
1. **DLL函数调用**:程序通过`LoadLibrary`函数加载动态链接库,然后使用`GetProcAddress`获取加密解密函数的地址,最后调用这些函数进行数据处理。 2. **参数传递**:加密和解密函数可能需要接收明文数据、密钥和...
开发者可以通过阅读这些源码来理解加密解密的具体实现,学习如何在MFC环境中集成加密算法。 通过理解和掌握这些知识点,开发者不仅能创建出具有文件加密解密功能的应用,还能进一步提升其在数据安全领域的专业技能...
基于MATLAB的图像加密解密GUI(混沌加密解密,arnold加密解密。显示加密前后图像,灰度图。带解密GUI).zip基于MATLAB的图像加密解密GUI(混沌加密解密,arnold加密解密。显示加密前后图像,灰度图。带解密GUI).zip...
在IT领域,文件的安全性是至关重要的,尤其是在传输和存储敏感数据时。在这个项目中,我们关注的是使用C++编程语言实现对TXT文本文件的加密和解密功能。...同时,它也是一个学习C++编程、数据安全和加密算法的好案例。
对于初学者,这个项目提供了一个很好的DEs加密解密实践案例,可以学习如何在C++中调用加密库,理解加密解密的基本流程,以及如何在VS2017环境下构建和运行程序。 8. **安全性考虑**: 虽然DES在历史上被广泛使用...
这个名为"vb.net加密解密源代码"的项目,是利用Visual Studio 2008开发的一个小型应用程序,提供了对数据进行加解密的功能。下面我们将详细探讨相关的知识点。 1. **VB.NET基础**: VB.NET是微软公司开发的一种...
总的来说,这个压缩包可能提供了一个实用的加密解密字符串的编程实例,帮助开发者理解和学习如何在实际项目中实施加密技术,以保护敏感信息。对于初学者来说,这是一个很好的起点,可以从中学习到加密解密的基本概念...
在IT领域,加密和解密是信息安全的重要组成部分,特别是在C#编程环境中,开发相关...通过对这些源码的学习和理解,开发者可以掌握如何在C#环境下处理文档加密,保护敏感信息,同时也能提升对加密解密原理和实践的掌握。
总的来说,通过MFC实现DES加密解密并支持文件操作,不仅能够学习到数据加密的基本原理,还能加深对MFC类库的理解和应用。尽管DES在当今已经显得不够安全,但作为经典算法,它仍然是理解和学习加密技术的良好起点。...
在学习Python加密解密的过程中,了解并掌握基础算法是非常重要的一步,这不仅能够帮助我们理解加密技术的运作机制,也为后续深入学习和应用更复杂的安全协议打下坚实的基础。同时,我们也要时刻记住,无论加密技术...