(转)Java DES 与Base64

原文地址http://blog.csdn.net/tomatozq/article/details/20773559

1,DES

    /**
             * 解密
             * @param message
             * @param key
             * @return
             * @throws Exception
             */
            public static String decrypt(String message,String encoding) throws Exception {  

                byte[] bytesrc = convertHexString(message);
                Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
                DESKeySpec desKeySpec = new DESKeySpec(key.getBytes(encoding));
                SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
                SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
                IvParameterSpec iv = new IvParameterSpec(key.getBytes(encoding));  

                cipher.init(Cipher.DECRYPT_MODE, secretKey, iv);  

                byte[] retByte = cipher.doFinal(bytesrc);
                return new String(retByte,encoding);
            }  

            /**
             * 加密
             * @param message
             * @param key
             * @return
             * @throws Exception
             */
            public static String encrypt(String message,String encoding) throws Exception {
                Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");  

                DESKeySpec desKeySpec = new DESKeySpec(key.getBytes(encoding));  

                SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
                SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
                IvParameterSpec iv = new IvParameterSpec(key.getBytes(encoding));
                cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);  

                byte[] buf = cipher.doFinal(message.getBytes(encoding));  

                String a = toHexString(buf).toUpperCase();  

                return a;
            }  

            /**
             * 字符串转换为16进制数组
             * @param ss
             * @return
             */
            public static byte[] convertHexString(String ss) {
                byte digest[] = new byte[ss.length() / 2];
                for (int i = 0; i < digest.length; i++) {
                    String byteString = ss.substring(2 * i, 2 * i + 2);
                    int byteValue = Integer.parseInt(byteString, 16);
                    digest[i] = (byte) byteValue;
                }  

                return digest;
            }  

            /**
             * 16进制数组转换为字符串
             * @param b
             * @return
             */
            public static String toHexString(byte b[]) {
                StringBuffer hexString = new StringBuffer();
                for (int i = 0; i < b.length; i++) {
                    String plainText = Integer.toHexString(0xff & b[i]);
                    if (plainText.length() < 2)
                        plainText = "0" + plainText;
                    hexString.append(plainText);
                }  

                return hexString.toString();
            }

2,Base64

    byte[] enc = Base64.encode(encText.getBytes(encoding), Base64.DEFAULT);
    byte[] bytesrc = Base64.decode(encText.getBytes(encoding), Base64.DEFAULT);

  

时间: 2024-08-05 14:35:18

(转)Java DES 与Base64的相关文章

java进阶12 Base64 UrlBase64 Hex 加密 解密技术

java的加密与解密技术: 现在的加密技术主要有 单向加密算法:以MD5 SHA算法为代表 对称加密算法:以DES 三重DES AES PBE算法为代表 非对称加密算法:以RSA为代表 简要的说下这三种加密算法的区别 先是单向加密算法,顾名思义,它不会有密钥,因为它是单向的,加密之后无法解密,就连程序猿都无法知道加密之后的东西是什么 主要用处是数据完整性的验证. 对称加密算法,其特征是公钥与私钥相同.一般用来数据储存,比如将数据加密之后存入数据库,那么数据库管理员就无法泄密数据库中的类容 有密钥

Java DES 测试

package com.des.test; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.spec.InvalidKeySpecException; import java.security.spec.KeySpec; import j

加密解密工具类(Java,DES)

一个Java版的DES加密工具类,可以用来进行网络数据传输加密,保存密码的时候进行加密. import java.security.Key; import java.security.spec.AlgorithmParameterSpec; import javax.crypto.Cipher; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import javax.crypto.spec.I

C#加密解密(DES,AES,Base64,md5,SHA256,RSA,RC4)

一:异或^简单加解密(数字类型) 1:原理: 异或用于比较两个二进制数的相应位,在执行按位"异或"运算时,如果两个二进制数的相应位都为1或者都为0,则返回0;如果两个二进制数的相应位其中一个为1另一个为0,则返回1. //对数字加密 int P_int_Num, P_int_Key;//定义两个值类型变量 string Encryptstr = (P_int_Num ^ P_int_Key).ToString();//加密数值 //对数字解密 int P_int_Key, P_int_

Java DES 加密和解密

DES算法简介DES(Data Encryption Standard)是发明最早的最广泛使用的分组对称加密算法.DES算法的入口参数有三个:Key.Data.Mode.其中Key为8个字节共64位,是DES算法的工作密钥:Data也为8个字节64位,是要被加密或被解密的数据:Mode为DES的工作方式,有两种:加密或解密. 项目中的加密和解密工具类: public class DesUtils { public final static String DES = "DES"; pub

【转】 java DES ECB模式对称加密解密

最近需要又要使用DES加密数据,要求DES加密出来的数据为对称加密,经过研究,发现了一些问题: 1.DES对称ECB模式加密的数据,长度必须为8的倍数 2.加密的数据,加密后先转码(因为加密后的数据我是转码了),否则解密是乱码格式 一下是源代码: 这个是加密的工具类: package com.palmfu.sql; import java.security.Key; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpe

C# Java DES加密解密

c#代码: public class DESHelper    {          /// <summary>        /// DES加密算法        /// </summary>        /// <param name="encryptString">要加密的字符串</param>        /// <param name="sKey">加密码Key</param>  

Java对图片Base64转码--HTML对Base64解码

Java对图片Base64转码 package base64; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import sun.misc.BASE64Decod

javaScript base64算法的实现 与 java中的base64 加密 解密

前段时间,工作需要,需要用js和java配套的base64算法,奈何没找到,然后网上抄一套.用起来还是很有效的. 闲言少絮,直接上干货. js 版base 64 算法  base64.js var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; //将Ansi编码的字符串进行Base64编码 function encode64(input) { var output = &quo