源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

字符串desede 3des加密示例分享

  • 时间:2022-11-01 04:51 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:字符串desede 3des加密示例分享
[u]复制代码[/u] 代码如下:
/*字符串 DESede(3DES) 加密*/ import java.security.Security; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; public class DES3 {  private static final String Algorithm = "DESede"; //定义加密算法,可用  // DES,DESede,Blowfish  // keybyte为加密密钥,长度为24字节  // src为被加密的数据缓冲区(源)  public static String encryptMode(byte[] keybyte, byte[] src)  {   try   {    // 生成密钥    SecretKey deskey = new SecretKeySpec(keybyte, Algorithm);    // 加密    Cipher c1 = Cipher.getInstance(Algorithm);    c1.init(Cipher.ENCRYPT_MODE, deskey);    // 开始加密运算    byte[] encryptedByteArray = c1.doFinal(src);    // 加密运算之后 将byte[]转化为base64的String    BASE64Encoder enc = new BASE64Encoder();    return enc.encode(encryptedByteArray);   }   catch (java.security.NoSuchAlgorithmException e1)   {    e1.printStackTrace();   }   catch (javax.crypto.NoSuchPaddingException e2)   {    e2.printStackTrace();   }   catch (java.lang.Exception e3)   {    e3.printStackTrace();   }   return null;  }  // keybyte为加密密钥,长度为24字节  // src为加密后的缓冲区  public static byte[] decryptMode(byte[] keybyte, String src)  {   try {    // 生成密钥    SecretKey deskey = new SecretKeySpec(keybyte, Algorithm);    // 解密    Cipher c1 = Cipher.getInstance(Algorithm);    c1.init(Cipher.DECRYPT_MODE, deskey);    // 解密运算之前    BASE64Decoder dec = new BASE64Decoder();    byte[] encryptedByteArray = dec.decodeBuffer(src);    // 解密运算 将base64的String转化为byte[]    return c1.doFinal(encryptedByteArray);   } catch (java.security.NoSuchAlgorithmException e1) {    e1.printStackTrace();   } catch (javax.crypto.NoSuchPaddingException e2) {    e2.printStackTrace();   } catch (java.lang.Exception e3) {    e3.printStackTrace();   }   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();  }  public static void main(String[] args)  {   // 添加新安全算法,如果用JCE就要把它添加进去   Security.addProvider(new com.sun.crypto.provider.SunJCE());   final byte[] keyBytes = { 0x11, 0x22, 0x4F, 0x58, (byte) 0x88, 0x10,     0x40, 0x38, 0x28, 0x25, 0x79, 0x51, (byte) 0xCB, (byte) 0xDD,     0x55, 0x66, 0x77, 0x29, 0x74, (byte) 0x98, 0x30, 0x40, 0x36,     (byte) 0xE2 }; // 24字节的密钥   String szSrc = "This is a 3DES test. 测试";   System.out.println("加密前的字符串:" + szSrc);   String encoded = encryptMode(keyBytes, szSrc.getBytes());   System.out.println("加密后的字符串:" + encoded);   byte[] srcBytes = decryptMode(keyBytes, encoded);   System.out.println("解密后的字符串:" + (new String(srcBytes)));  } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部