打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Java 和 C#通用的DES加密工具类
.net代码
[csharp] view plain copy
/// <summary>
/// DEC 加密
/// </summary>
/// <param name="pToEncrypt">需要加密的字符串</param>
/// <param name="sKey"></param>
/// <param name="sIV"></param>
/// <returns></returns>
public static string EncryptHttpString(string pToEncrypt, string sKey, string sIV)
{
//把字符串放到byte数组中
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
des.Key = Encoding.ASCII.GetBytes(sKey); //建立加密对象的密钥和偏移量
des.IV = Encoding.ASCII.GetBytes(sIV); //原文使用ASCIIEncoding.ASCII方法的GetBytes方法
MemoryStream ms = new MemoryStream(); //使得输入密码必须输入英文文本
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
StringBuilder ret = new StringBuilder();
foreach (byte b in ms.ToArray())
ret.AppendFormat("{0:X2}", b);
ret.ToString();
return ret.ToString();
}
/// <summary>
/// DEC 解密
/// </summary>
/// <param name="pToDecrypt">需要解密的字符串</param>
/// <param name="sKey"></param>
/// <param name="sIV"></param>
/// <returns></returns>
public static string DecryptHttpString(string pToDecrypt, string sKey, string sIV)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
for (int x = 0; x < pToDecrypt.Length / 2; x++)
{
int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
inputByteArray[x] = (byte)i;
}
des.Key = Encoding.ASCII.GetBytes(sKey); //建立加密对象的密钥和偏移量,此值重要,不能修改
des.IV = Encoding.ASCII.GetBytes(sIV);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
StringBuilder ret = new StringBuilder(); //建立StringBuild对象,CreateDecrypt使用的是流对象,必须把解密后的文本变成流对象
return System.Text.Encoding.Default.GetString(ms.ToArray());
}
java代码
[java] view plain copy
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Hex;
public class Des {
private byte[] desKey;
//解密数据
public static String decrypt(String message,String key) throws Exception {
byte[] bytesrc =convertHexString(message);
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("UTF-8"));
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
IvParameterSpec iv = new IvParameterSpec(key.getBytes("UTF-8"));
cipher.init(Cipher.DECRYPT_MODE, secretKey, iv);
byte[] retByte = cipher.doFinal(bytesrc);
return new String(retByte);
}
public static byte[] encrypt(String message, String key) throws Exception {
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("ASCII"));
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
IvParameterSpec iv = new IvParameterSpec(key.getBytes("ASCII"));
cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);
return cipher.doFinal(message.getBytes("GBK"));
}
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;
}
public static void main(String[] args) throws Exception {
String key = "*Iu&o^0#";
String value="web新能力";
// value=java.net.URLEncoder.encode(value, "utf-8").toLowerCase();
System.out.println("加密数据:"+value);
String a=toHexString(encrypt(value, key)).toUpperCase();
System.out.println("加密后的数据为:"+a);
//String b=java.net.URLDecoder.decode(decrypt(a,key), "utf-8") ;
String b = decrypt(a,key);
System.out.println("解密后的数据:"+b);
}
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();
}
}
加密算法之:对称加密与非对称加密扫盲贴
对称加密:加密(encryption)与解密(decryption)使用的是同样的密钥(secret key)。优点:算法公开、计算量小、加密速度快、加密效率高,缺点:秘钥的管理和分发非常困难,不够安...
2016-12-25 11:08:16
阅读数:5162
java加解密之DES多种使用方式
最近逆向分析中,常常遇到加解密的内容,接触得比较多的加解密算法一般有对称的DES和AES,非对称的RSA,单向的MD5等。 这里就DES的使用研究进行一个随笔记录,并不会说其实现原理,原理可以自行百度...
2016-08-11 15:04:59
阅读数:18467
洞庭明前碧螺春,坂田地区包邮,支持试喝三天不满意可以退款!八田日商贸 · 顶新
byte[]作为Map key的问题
1. TreeMap: 为TreeMap指定Comparator,这样就能够使用byte[]作为key了。 2. HashMap: byte[]会按照地址生成hashcode,作为key的话需要注意...
2016-06-25 10:31:51
阅读数:435
java拼接byte[]
//java 合并两个byte数组      public static byte[] byteMerger(byte[] byte_1, byte[] byte_2){          byte[...
2016-09-23 13:18:49
阅读数:1834
对称加密DES和TripleDES
一、 对称加密 对称加密,是一种比较传统的加密方式,其加密运算、解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时,必须共同持有该密码(称为对称密码)。因此,通信双方都...
2016-08-31 10:50:50
阅读数:1478
Java那可恶的Byte.parseByte()
在Java中想把 9D 转成 byte,首先想到的是byte v = Byte.parseByte("9D", 16); 结果得到一个java.lang.NumberFormatException,说...
2011-06-29 17:02:00
阅读数:8309
伟人诞辰纪念币币值等额兑换,免预约,想收藏的千万别错过!念龙 · 顶新
java常用加密方式实现
在各种系统中,我们都难免会要用到加密。加密方式分成可还原密文和不可还原密文两种,可还原密文用得比较普遍、比较多的就是DES算法了,不可还原的比较多的就是MD5了。本文提供两种算法的相应java实现。有...
2015-04-20 16:54:28
阅读数:221
C移植到Java中,byte[]与其他数据类型的转换
最近在把C代码移植到Java(Android)中,C中一般的数据都会使用byte[](unsigned char)来存储,且位操作特别频繁。我要把这些数据转换成在Java存储,或把byte转换成本语言...
2016-07-02 17:30:59
阅读数:3874
java 基本类型与byte[]相互转换
//long类型转成byte数组 public static byte[] longToBytes(long number) { long temp = number; ...
2012-11-02 14:00:10
阅读数:5628
Java中byte相加的问题.
代码片段:  1 2 3 4 5 byte b1=1,b2=2,b3,b6;  final byte b4...
2016-09-22 16:08:22
阅读数:3468
Java 通用的DES加密工具类的实现
由于:java端对 DES加密算法默认的死EBC所以我们要手动的把其转化为CBC 保持一致的因素有三个 :1.密钥 (kingsfykj) 2.偏移量 (IV) 3.输入 import sun.m...
2015-11-23 14:12:43
阅读数:3083
C#和Java实现互通的RSA&DES加解密算法(一)
C#和Java实现互通的RSA&DES加解密算法
2014-12-10 13:29:00
阅读数:1809
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Java家技术论坛 :: 阅读主题 - 用DES加密算法保护Java源代码
利用DES加密算法保护Java源代码
常用加密算法的Java实现总结(二)
JAVA实现DES加密
Java与Delphi交叉DES加解密的问题
C#编程总结(七)数据加密——附源码
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服