`
struts
  • 浏览: 76061 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java .net des

    博客分类:
  • java
阅读更多
import javax.crypto.Cipher;  
import javax.crypto.SecretKey;  
import javax.crypto.SecretKeyFactory;  
import javax.crypto.spec.DESKeySpec;  
import javax.crypto.spec.IvParameterSpec;  
 
 
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("UTF-8"));  
 
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");  
        SecretKey secretKey = keyFactory.generateSecret(desKeySpec);  
        IvParameterSpec iv = new IvParameterSpec(key.getBytes("UTF-8"));  
        cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);  
 
        return cipher.doFinal(message.getBytes("UTF-8"));  
    }  
      
    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 = "11111111";  
        String value="我们都是中国人 ";  
        String jiami=java.net.URLEncoder.encode(value, "utf-8").toLowerCase();  
          
        System.out.println("加密数据:"+jiami);  
        String a=toHexString(encrypt(jiami, key)).toUpperCase();  
          
      
        System.out.println("加密后的数据为:"+a);  
        String b=java.net.URLDecoder.decode(decrypt(a,key), "utf-8") ;  
        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();  
    }  
 


import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.IvParameterSpec;


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("UTF-8"));

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

return cipher.doFinal(message.getBytes("UTF-8"));
}

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 = "11111111";
String value="我们都是中国人 ";
String jiami=java.net.URLEncoder.encode(value, "utf-8").toLowerCase();

System.out.println("加密数据:"+jiami);
String a=toHexString(encrypt(jiami, key)).toUpperCase();


System.out.println("加密后的数据为:"+a);
String b=java.net.URLDecoder.decode(decrypt(a,key), "utf-8") ;
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();
}

}

.net 版本:



C#代码
using System;  
using System.Data;  
using System.Configuration;  
using System.Web;  
using System.Web.Security;  
using System.Web.UI;  
using System.Web.UI.WebControls;  
using System.Web.UI.WebControls.WebParts;  
using System.Web.UI.HtmlControls;  
using System.Data.SqlClient;  
using System.Security.Cryptography;  
using System.IO;  
using System.Text;  
public class TestDes{  
    //cookies加密密钥  
    public static string DES_Key = "11111111"; 

    #region DESEnCode DES加密  
    public static string DESEnCode(string pToEncrypt, string sKey)  
    {  
        pToEncrypt = HttpContext.Current.Server.UrlEncode(pToEncrypt);  
        DESCryptoServiceProvider des = new DESCryptoServiceProvider();  
        byte[] inputByteArray = Encoding.GetEncoding("UTF-8").GetBytes(pToEncrypt);  
 
        //建立加密对象的密钥和偏移量   
        //原文使用ASCIIEncoding.ASCII方法的GetBytes方法   
        //使得输入密码必须输入英文文本   
        des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);  
        des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);  
        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();  
    } 
    #endregion 

    #region DESDeCode DES解密  
    public static string DESDeCode(string pToDecrypt, string sKey)  
    {  
        //    HttpContext.Current.Response.Write(pToDecrypt + "<br>" + sKey);  
        //    HttpContext.Current.Response.End();  
        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 = ASCIIEncoding.ASCII.GetBytes(sKey);  
        des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);  
        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();  
 
        return HttpContext.Current.Server.UrlDecode(System.Text.Encoding.Default.GetString(ms.ToArray()));  
    } 
    #endregion  
 
      public TestDes()  
    {  
        //  
        // TODO: 在此处添加构造函数逻辑  
        //  
    }  
}
分享到:
评论

相关推荐

    DES加密 java与.net可以相互加密解密两种方法

    在Java和.NET平台上,我们可以使用内置的加密库实现DES加密和解密。本文将详细介绍如何在Java和.NET中实现互操作的DES加密解密,并提供两种不同的方法。 **方法一:使用标准库** 1. **Java实现**: - 引用`javax....

    java.net(c#)交换加密算法(java版本)

    根据提供的文件信息,本文将详细解释“java.net(c#)交换加密算法(java版本)”涉及的关键概念、实现原理及代码示例。 ### 1. 加密算法概述 #### 1.1 DES (Data Encryption Standard) 算法 DES是一种对称加密...

    java和.net交换加密算法(.net版本)+(java版本)

    在IT行业中,跨平台通信和数据安全是两个重要的议题,特别是在Java和.NET这两个广泛应用的开发环境中。本主题探讨的是如何在Java与.NET之间进行加密算法的互操作,以确保数据在传输过程中的安全性。以下是对这个主题...

    3des加密解密base64编码解码完全与ASP.NET,JAVA,兼容的js

    本资源提供的是一套完整的JavaScript实现,能够与ASP.NET和JAVA平台的3DES加密解密及Base64编码解码功能保持兼容。 首先,3DES的工作原理是在DES的基础上增加了一次加密过程,即使用同一个密钥进行三次加密,这大大...

    des加密解密JAVA与.NET互通实例

    在Java和.NET之间进行互通时,DES加密解密的实现是至关重要的,因为这允许两个平台之间的应用程序能够共享加密过的数据并正确地解密。下面将详细解释DES加密解密的基本原理、Java实现以及如何在Java与.NET之间进行...

    两套java与.net交互数据加密解密代码

    综上所述,这两套代码提供了Java和.NET之间安全的数据交互方案,利用DES3加密算法和两种工作模式,保证了数据的机密性和完整性。在实际项目中,开发者可以根据具体需求选择合适的加密模式,并注意相关的安全问题。

    三平台通用加密算法(java/.net/Object-C)

    "三平台通用加密算法"指的是可以在Java、.Net和Object-C这三个不同的开发平台上使用的相同加密逻辑。这种跨平台的兼容性使得开发人员可以更容易地在各种环境中实现一致的安全策略。 在Java中,加密通常依赖于Java ...

    DESjava实现源码(the5fire.net)

    在Java中实现DES算法,主要涉及以下几个关键步骤: 1. 密钥处理:DES的密钥是64位的,但其中第8、16、24、32、40、48、56和64位是校验位,不参与实际的加密和解密过程。因此,实际有效的密钥只有56位。Java中使用`...

    JAVA版Des加密解密源码

    Java版DES(Data Encryption Standard)加密解密源码主要涉及的是信息安全领域中对数据进行加解密的技术。DES是一种广泛使用的对称加密算法,它的全称为数据加密标准,由IBM在1970年代初开发,并在1977年由美国国家...

    三重DES文件加密和解密(java),有界面,免费

    Java实现三重DES文件加密,有界面,并可实现任意文件的加密。里面是一个源程序,以及它生成的类文件和两个测试文件。在cmd窗口中运行java des.FileEncrypter即可出现加密界面,这是三重DES加密,密钥可自行输入,也...

    Java利用DES私钥对称加密代码实例

    Java中的DES(Data Encryption Standard)是一种广泛...在压缩包文件"codefans.net"中,可能包含了上述Java DES加密的完整示例代码。通过阅读和理解这些代码,开发者可以更好地掌握如何在实际项目中应用DES加密技术。

    用Java加密类实现DES、RSA及SHA的加密算法

    提到的文件列表中包含的"codefans.net"可能是指一个包含相关代码示例的资源,通常这些示例会详细展示如何在Java程序中实现上述加密算法。通过阅读和学习这些代码,可以更直观地了解如何在实际项目中应用加密技术。 ...

    java c# des加密解密

    在C#中实现DES加密主要涉及.NET Framework提供的`System.Security.Cryptography`命名空间下的`DESCryptoServiceProvider`类。以下是对C#部分代码片段的分析: ```csharp // 创建一个DES加密提供程序对象 ...

    基于客户端通信的DES加密的java实现

    Java的`java.net.Socket`类提供了客户端连接到服务器的能力,`ServerSocket`类则用于服务器端监听连接请求。在DES加密的客户端通信中,我们需要在数据发送前对其进行加密,并在接收后进行解密。以下是一般的步骤: ...

    DES 加密 JAVA与C# 交互 绝对可用

    “JAVA”和“.NET”(C#是.NET框架的一部分)暗示了我们将对比和讨论两种不同编程语言中的实现方法。 DESService.cs可能是C#代码中实现DES加密服务的部分,可能包含了加密和解密的方法,以及可能的与Java通信的接口...

    对称加密适用java和net

    压缩包内的文件"DES.cs"很可能是一个.NET实现的DES加密类,而"QCDES.java"可能是Java实现的类,它们都可能是为了在两个平台上进行对称加密通信而设计的。 为了在Java和.NET之间实现跨平台的数据加密传输,你需要...

    兼容C# VB.net的TripleDES加解密的java源码

    坑1:Java的字节从-128到127,因此给其赋值超过127会报错;DotNET的字节从0-256,无此问题。 坑2:Java没有PKCS7Padding,只有PKCS5Padding。因此DotNET的BlockSize只有为8,才可与Java兼容。 坑3:Java的字符串转...

    3DESNetJava对接

    3DES Java 对接 Net CBC 3DES算法相关文章 一个是C#采用CBC Mode,PKCS7 Padding,Java采用CBC Mode,PKCS5Padding Padding, 另一个是C#采用ECB Mode,PKCS7 Padding,Java采用ECB Mode,PKCS5Padding Padding, Java的...

    des加密java-ios.zip

    des加密java-ios.zip博客地址http://blog.csdn.net/mengxiangyue/article/details/40015727

    java通信学习-协议与加密

    在Java中,我们可以使用`java.net.Socket`和`java.net.ServerSocket`类来实现TCP通信。 2. **UDP**:UDP是一种无连接的、不可靠的传输协议,它不保证数据的顺序和完整性,但具有更高的传输效率。Java中,我们可以...

Global site tag (gtag.js) - Google Analytics