`
yjshengshe
  • 浏览: 203868 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

加密解密学习

 
阅读更多

 

/////////////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));

}

 

}


分享到:
评论

相关推荐

    java 加密解密 软件 c c++ 纯净版

    总的来说,这个资源包提供了从理论到实践的加密解密学习材料,涵盖了多种编程语言,适合于希望深入理解和应用加密技术的开发者。无论是初学者还是有经验的程序员,都能从中受益,提升在信息安全领域的技能。

    [加密解密2] 配套光盘

    总的来说,这份【加密解密2】配套光盘是一个全面的DELPHI加密解密学习资源,适合那些希望增强其应用程序安全性的DELPHI开发者,或者是对计算机安全感兴趣的个人。通过这份资源,开发者可以学习到如何在实际项目中...

    AES 加密解密算法.js

    用于参数加密,api解密

    Qt实现AES加密解密

    这个程序应当包含了上述知识点的具体应用,你可以通过阅读源代码、编译和运行来进一步理解和学习AES加密解密的实现细节。这个实战例程可以帮助开发者更好地掌握Qt环境下的加密解密操作,提高数据安全保护能力。

    js的加密解密-aes.js

    使用java在服务端进行aes的加密解密,前端使用该js进行aes加密解密.

    C#文件加密解密(完整项目)

    这个"文件加密解密(完整项目)"提供了一个可以直接编译运行的解决方案,对于学习和实践C#文件加密技术具有很高的参考价值。通过理解和实践该项目,开发者可以深入理解加密解密原理,提升数据保护能力。

    TEA加密解密.rar

    通过易语言的TEA加密解密源码,我们可以学习到如何在实际编程环境中应用这种加密算法。同时,源码也可以帮助我们深入理解加密算法的内部工作机制,这对于网络安全、数据保护以及密码学的学习都是非常有价值的。 ...

    加密解密_C语言_加密解密_

    在IT领域,加密和解密是信息安全的重要组成部分,特别是在数据传输、...通过学习和实践,你可以创建自己的加密解密工具,为数据安全提供保障。在实际项目中,结合现代密码学理论,可以构建更安全、高效的数据保护系统。

    JAVA数据加密解密的实例

    本实例将聚焦于JAVA数据加密解密的实践应用。 首先,让我们理解加密和解密的基本概念。加密是一种将明文(可读信息)转化为密文(不可读信息)的过程,以保护数据不被未经授权的用户访问。解密则是加密的逆过程,将...

    des加密解密_Des加密解密_DES加密_

    1. **DLL函数调用**:程序通过`LoadLibrary`函数加载动态链接库,然后使用`GetProcAddress`获取加密解密函数的地址,最后调用这些函数进行数据处理。 2. **参数传递**:加密和解密函数可能需要接收明文数据、密钥和...

    MFC 实现文本文件加密解密

    开发者可以通过阅读这些源码来理解加密解密的具体实现,学习如何在MFC环境中集成加密算法。 通过理解和掌握这些知识点,开发者不仅能创建出具有文件加密解密功能的应用,还能进一步提升其在数据安全领域的专业技能...

    基于MATLAB的图像加密解密GUI(混沌加密解密,arnold加密解密 显示加密前后图像,灰度图 带解密GUI).zip

    基于MATLAB的图像加密解密GUI(混沌加密解密,arnold加密解密。显示加密前后图像,灰度图。带解密GUI).zip基于MATLAB的图像加密解密GUI(混沌加密解密,arnold加密解密。显示加密前后图像,灰度图。带解密GUI).zip...

    文件加密解密.rar_C++ 文本加密_TXT加密_c++对文件加密_加密txt_文件加密解密

    在IT领域,文件的安全性是至关重要的,尤其是在传输和存储敏感数据时。在这个项目中,我们关注的是使用C++编程语言实现对TXT文本文件的加密和解密功能。...同时,它也是一个学习C++编程、数据安全和加密算法的好案例。

    c++字符串加密解密

    对于初学者,这个项目提供了一个很好的DEs加密解密实践案例,可以学习如何在C++中调用加密库,理解加密解密的基本流程,以及如何在VS2017环境下构建和运行程序。 8. **安全性考虑**: 虽然DES在历史上被广泛使用...

    vb.net加密解密源代码

    这个名为"vb.net加密解密源代码"的项目,是利用Visual Studio 2008开发的一个小型应用程序,提供了对数据进行加解密的功能。下面我们将详细探讨相关的知识点。 1. **VB.NET基础**: VB.NET是微软公司开发的一种...

    加密解密字符串的例子

    总的来说,这个压缩包可能提供了一个实用的加密解密字符串的编程实例,帮助开发者理解和学习如何在实际项目中实施加密技术,以保护敏感信息。对于初学者来说,这是一个很好的起点,可以从中学习到加密解密的基本概念...

    c#加密解密源码

    在IT领域,加密和解密是信息安全的重要组成部分,特别是在C#编程环境中,开发相关...通过对这些源码的学习和理解,开发者可以掌握如何在C#环境下处理文档加密,保护敏感信息,同时也能提升对加密解密原理和实践的掌握。

    用 MFC 实现 DES 加密解密算法

    总的来说,通过MFC实现DES加密解密并支持文件操作,不仅能够学习到数据加密的基本原理,还能加深对MFC类库的理解和应用。尽管DES在当今已经显得不够安全,但作为经典算法,它仍然是理解和学习加密技术的良好起点。...

    加密解密_加密_python_解密_

    在学习Python加密解密的过程中,了解并掌握基础算法是非常重要的一步,这不仅能够帮助我们理解加密技术的运作机制,也为后续深入学习和应用更复杂的安全协议打下坚实的基础。同时,我们也要时刻记住,无论加密技术...

Global site tag (gtag.js) - Google Analytics