给一个简单的加密类,使用方便快捷。当然加密的key非常规律,如果想改可以修改key变为复杂的key。
撸代码先:首先由一个加密类DES.class
需要导入的类如下:
import java.nio.charset.Charset; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec;
类及方法:
public class DES { //中文也是可以加密的,所以规定解密后的字符编码为UTF-8. private static String DEFAULT_CHARSET = "UTF-8"; /** * * @Title: encript * @Description: DES加密 * @param @param org * @return byte[] 返回类型 * @throws */ public String encript(String org) { byte[] destBytes = null; byte[] orgBytes = org.getBytes(Charset.forName(DEFAULT_CHARSET)); try { // DES算法要求有一个可信任的随机数源 SecureRandom sr = new SecureRandom(); DESKeySpec dks = new DESKeySpec(this.getKey()); SecretKeyFactory keyFactory; keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey securekey = keyFactory.generateSecret(dks); // Cipher ciper = Cipher.getInstance("DES/CBC/NOPadding"); Cipher ciper = Cipher.getInstance("DES"); // ciper.init(Cipher.ENCRYPT_MODE, securekey, new // IvParameterSpec(this // .getIV())); ciper.init(Cipher.ENCRYPT_MODE, securekey, sr); destBytes = ciper.doFinal(orgBytes); } catch(Exception e) { e.printStackTrace(); } String dest = bytesToHexString(destBytes); return dest; } /** * * @Title: decript * @Description: DES解密 * @param @param org * @return String 返回类型 * @throws */ public String decript(String org) { byte[] destBytes = null; byte[] orgBytes = hexStringToBytes(org); try { // DES算法要求有一个可信任的随机数源 SecureRandom sr = new SecureRandom(); DESKeySpec dks = new DESKeySpec(this.getKey()); SecretKeyFactory keyFactory; keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey securekey = keyFactory.generateSecret(dks); // Cipher ciper = Cipher.getInstance("DES/CBC/NOPadding"); Cipher ciper = Cipher.getInstance("DES"); // ciper.init(Cipher.ENCRYPT_MODE, securekey, new // IvParameterSpec(this // .getIV())); ciper.init(Cipher.DECRYPT_MODE, securekey, sr); destBytes = ciper.doFinal(orgBytes); } catch(Exception e) { e.printStackTrace(); } String dest = new String(destBytes, Charset.forName(DEFAULT_CHARSET)); return dest; } /** * * @Title: getKey * @Description: 获取密钥(16位) * @return byte[] 返回类型 * @throws */ private byte[] getKey() { // 固定密钥 String key = "12345678abcdefgh"; return key.getBytes(Charset.forName(DEFAULT_CHARSET)); } /** * * @Title: getIV * @Description: 获取初始向量(8位),取key的前8位,不足补0 * @return byte[] 返回类型 * @throws */ public byte[] getIV() { byte[] key = this.getKey(); byte[] iv = new byte[8]; System.arraycopy(key, 0, iv, 0, 8); System.out.println("iv :" + iv); return iv; } /** * * @Title: bytesToHexString * @Description: byte[]转十六进制字符串 * @param @param src * @return String 返回类型 * @throws */ public String bytesToHexString(byte[] src) { StringBuilder stringBuilder = new StringBuilder(""); if (src == null || src.length <= 0) { return null; } for (int i = 0; i < src.length; i++) { int v = src[i] & 0xFF; String hv = Integer.toHexString(v); if (hv.length() < 2) { stringBuilder.append(0); } stringBuilder.append(hv); } return stringBuilder.toString(); } /** * * @Title: hexStringToBytes * @Description: 十六进制字符串转byte[] * @param @param hexString * @return byte[] 返回类型 * @throws */ public byte[] hexStringToBytes(String hexString) { if (hexString == null || hexString.equals("")) { return null; } hexString = hexString.toUpperCase(); int length = hexString.length() / 2; char[] hexChars = hexString.toCharArray(); byte[] dest = new byte[length]; for (int i = 0; i < length; i++) { int pos = i * 2; dest[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1])); } return dest; } /** * * @Title: charToByte * @Description: char转byte * @param @param c * @return byte 返回类型 * @throws */ private byte charToByte(char c) { int index = "0123456789ABCDEF".indexOf(c); if (index == -1) { index = "0123456789abcdef".indexOf(c); } return (byte) index; } /** * * @Title: printHexString * @Description: 将指定byte数组以16进制的形式打印到控制台 * @return void 返回类型 * @throws */ public void printHexString(byte[] bytes) { for (int i = 0; i < bytes.length; i++) { String hex = Integer.toHexString(bytes[i] & 0xFF); if (hex.length() == 1) { hex = '0' + hex; } System.out.print(hex.toUpperCase()); } } public static void main(String arg[]) { DES des = new DES(); String testOrg = "我是中国人!123dfasdf "; // DES 加密 String encript = des.encript(testOrg); System.out.println("encript data: " + encript); // DES 解密 String decript = des.decript(encript); System.out.println("decript data: " + decript); // Base64 加密 byte[] base64Encript = Base64.encode(testOrg.getBytes(Charset .forName(DEFAULT_CHARSET)), Base64.DEFAULT); System.out.println("base64 encript:" + new String(base64Encript, Charset.forName(DEFAULT_CHARSET))); // Base64 解密 byte[] base64Decript = Base64.decode(base64Encript, Base64.DEFAULT); System.out.println("base64 decript:" + new String(base64Decript, Charset.forName(DEFAULT_CHARSET))); } }
相关推荐
登录敏感数据传输为明文传输,数据加密传输仅在获取短信验证码时进行,但是在登录过程中未进行加密传输 用于前台页面传输数据到后台时,对敏感数据加密传输,后台在对敏感数据解密处理 本代码块中有base64加密两种...
前台对from表单提交的数据进行js加密,后台对前台提交过来的代码进行解密,后台代码为java
android平台的RSA加密和解密算法,和后台JAVA加密和解密算法有所不同,能够和后台进行数据互通。完美解决后台的加密数据,android平台解密后乱码问题,也不会出现android平台加密密文,后台解析出现乱码问题
java后台请求http,区分get和post,一般是用来抓取带有登陆权限网站的数据,后台先登录,保持session,再请求数据URL
因为是参照 js Base64写的java实现,所以代码可实现前台js,后台java的加密,解密的任意组合,当然也可自己简单改下参照序列顺序,使自己的加密解密变为独一的,网上无法使用工具解密出正确的数据。熟悉二进制的可...
小程序des加密,后台java解密配套使用的,需要的同学可以看一下,为了抽满50个字,也是需要凑字数的,大家伙请见谅,
java:(java类中引入MD5.java文件) MD5 md5=new MD5(); boolean flag=false; List<User> userlist =jdbc.getUserList("select * from t_activity_product"); for(int i=0;i();i++){ User user =userlist.get(i); if...
项目采用servlet编写,简单明了,前台对数据进行公钥加密,后台用私钥进行解密,并且支持中文加密,项目运行后地址为: http://localhost:8082/rsa/rsaser?worktype=turn 端口号视情况而定
主要为大家详细介绍了java实现后台数据显示在前端,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
java中对传送到后台的数据进行加密后在存放到数据库中。
使用java springmvc对微信小程序获取到的加密微信运动数据进行解密
基于Java实现带图形用户界面的基于数据加密算法的即时聊天系统源码+项目说明+sql数据库.zip 本项目基于 Java 的 Swing 包实现了一个带图形用户界面的基于数据加密算法的即时聊天系统。实现了用户登录及验证、在线...
Java后台用于对数据md5转base64加密处理的一个方法封装。简单的一个加密解密的封装,初学者用,大神勿喷
Base64转码,AES加密解密,IOS,Android,Java 后台。 本工程可以直接使用,而且与IOS,Android,JAVA 已调通。 主要用于客户端进行通信,数据之间地安全性。对数据进行加密和解密。 适用于银行等较为保密的项目中。 ...
国密算法SM4,JavaScript加密,java解密主要web前台数据加密,java后台解密。前台有javascript算法方法html示例,后台有java解密文件包。
因为手机端后台通常是用php开发的Web Service,Android和iPhone客户端调用同样的Web Service接口,为了数据安全考虑,要对数据进行加密。以前用java做后台时候有过加密,就拿过来,用php调通了,在3个平台间加解密的...
JCryptoJS v3.1.2和JAVA加解密,支持AES,MD5等,其中AES有实例已在...在使用时js对明文密码加密再提交,后台java解密。 随机生成key放到session中,js用该key加密,java用该key解密。 可实现数据的保密性与完整性校验。
代码完善,直接粘贴复制即可使用,因为我想做一个数据加密,就开始了解Rsa加密算法,实现一个前端加密,后端解密的一个过程,然后我也不想重复造轮子,就上百度搜索,发现好多文章都是抄来抄去去的根本不合适。...
Java商城后台源码是一个用于构建电子商务网站的后台管理系统的源代码。...数据安全与权限控制:采用加密技术保证数据传输和存储的安全性。系统支持多级权限控制,确保只有具有权限的用户才能访问和操
RSA和AES前端数据加密,对其进行数据解密,以及返回参数加密,前端解密,完整原始文件,由于是城市表面常用的是这二种加解密方式,所以就写了这二种,每天会自动更换密密钥,后续我会陆续更新其他的加解密算法,...