博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# Java DES加密解密
阅读量:7033 次
发布时间:2019-06-28

本文共 3834 字,大约阅读时间需要 12 分钟。

先来个C#版的:

public class DESHelper    {        ///         /// DES加密算法        ///         /// 要加密的字符串        /// 加密码Key        /// 
正确返回加密后的结果,错误返回源字符串
public static string ToDESEncrypt(string encryptString, string sKey) { try { byte[] keyBytes = Encoding.UTF8.GetBytes(sKey); byte[] keyIV = keyBytes; byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString); DESCryptoServiceProvider desProvider = new DESCryptoServiceProvider(); // java 默认的是ECB模式,PKCS5padding;c#默认的CBC模式,PKCS7padding 所以这里我们默认使用ECB方式 desProvider.Mode = CipherMode.ECB; MemoryStream memStream = new MemoryStream(); CryptoStream crypStream = new CryptoStream(memStream, desProvider.CreateEncryptor(keyBytes, keyIV), CryptoStreamMode.Write); crypStream.Write(inputByteArray, 0, inputByteArray.Length); crypStream.FlushFinalBlock(); return Convert.ToBase64String(memStream.ToArray()); } catch { return encryptString; } } /// /// DES解密算法 /// /// 要解密的字符串 /// 加密Key ///
正确返回加密后的结果,错误返回源字符串
public static string ToDESDecrypt(string decryptString, string sKey) { byte[] keyBytes = Encoding.UTF8.GetBytes(sKey); byte[] keyIV = keyBytes; byte[] inputByteArray = Convert.FromBase64String(decryptString); DESCryptoServiceProvider desProvider = new DESCryptoServiceProvider(); // java 默认的是ECB模式,PKCS5padding;c#默认的CBC模式,PKCS7padding 所以这里我们默认使用ECB方式 desProvider.Mode = CipherMode.ECB; MemoryStream memStream = new MemoryStream(); CryptoStream crypStream = new CryptoStream(memStream, desProvider.CreateDecryptor(keyBytes, keyIV), CryptoStreamMode.Write); crypStream.Write(inputByteArray, 0, inputByteArray.Length); crypStream.FlushFinalBlock(); return Encoding.Default.GetString(memStream.ToArray()); } }

 

再来个Java版的

public class DESHelper {	private byte[] desKey;	public DES(String desKey) {		this.desKey = desKey.getBytes();	}	public byte[] desEncrypt(byte[] plainText) throws Exception {		SecureRandom sr = new SecureRandom();		byte rawKeyData[] = desKey;		DESKeySpec dks = new DESKeySpec(rawKeyData);		SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");		SecretKey key = keyFactory.generateSecret(dks);		Cipher cipher = Cipher.getInstance("DES");		cipher.init(Cipher.ENCRYPT_MODE, key, sr);		byte data[] = plainText;		byte encryptedData[] = cipher.doFinal(data);		return encryptedData;	}	public byte[] desDecrypt(byte[] encryptText) throws Exception {		SecureRandom sr = new SecureRandom();		byte rawKeyData[] = desKey;		DESKeySpec dks = new DESKeySpec(rawKeyData);		SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");		SecretKey key = keyFactory.generateSecret(dks);		Cipher cipher = Cipher.getInstance("DES");		cipher.init(Cipher.DECRYPT_MODE, key, sr);		byte encryptedData[] = encryptText;		byte decryptedData[] = cipher.doFinal(encryptedData);		return decryptedData;	}	public String encrypt(String input) throws Exception {		return base64Encode(desEncrypt(input.getBytes()));	}	public String decrypt(String input) throws Exception {		byte[] result = base64Decode(input);		return new String(desDecrypt(result));	}	public static String base64Encode(byte[] s) {		if (s == null)			return null;		BASE64Encoder b = new sun.misc.BASE64Encoder();		return b.encode(s);	}	public static byte[] base64Decode(String s) throws IOException {		if (s == null)			return null;		BASE64Decoder decoder = new BASE64Decoder();		byte[] b = decoder.decodeBuffer(s);		return b;	}	}

 

转载地址:http://jrual.baihongyu.com/

你可能感兴趣的文章
120.页面小闹钟
查看>>
【Python学习笔记】再议不可变对象
查看>>
HCL关于Telnet遇到的问题
查看>>
电脑怎么设置固定IP地址上网
查看>>
PDF怎么批量添加注释标记
查看>>
MDaemon邮件服务器微博客开通啦
查看>>
vsphere client 上传文件:Failed to log into NFC Server
查看>>
saltstack安装和简单配置(一)
查看>>
debian 系统python+uwsgi+nginx实现web环境
查看>>
mysql下如何执行sql脚本
查看>>
CAD命令栏窗口跑到屏幕外面怎么找回来
查看>>
nginx+php-fpm执行一半,502错误
查看>>
在Linux下反编译Android .apk文件
查看>>
MySQL里的wait_timeout
查看>>
记一次面试经验
查看>>
JDK与JavaSE JavaEE的关系
查看>>
Linux MMC/SD/SDIO体系结构
查看>>
C#程序退出的几种方法
查看>>
基于HTTP Live Streaming(HLS) 搭建在线点播系统
查看>>
常用的DOS命令
查看>>