java 和 .net 加密
来源:互联网 发布:windows phone系统 编辑:程序博客网 时间:2024/05/30 23:49
- 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 版本:
- 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: 在此处添加构造函数逻辑
- //
- }
- }
- java 和 .net 加密
- AES 加密,net和java 通用加密
- java 和.net的MD5加密不一样?!
- java和.net 交互加密解密
- AES加密解密(互通.NET和JAVA)
- Java和.net加密解密互通DES
- Java和.net加密解密互通RSA
- java数据传输DES加密和.net通用版
- 在Java和.NET平台的DES加密问题
- 彻底解决JAVA和.net MD5加密中文不一致问题
- JAVA和net的DES3加密的区别
- Java和.NET使用DES对称加密的区别
- JAVA和.NET使用DES对称加密的区别
- 彻底解决JAVA和.net MD5加密中文不一致问题
- PHP、Java、.Net和Javascript的AES加密解密实现
- JAVA和.NET使用DES对称加密的区别
- DES加密解密——论java和.net
- java DES 和 .net DES 互加密解密
- 经典游戏贪食蛇的java实现,
- 死锁
- jsp 内置 对象 属性
- 双线路接入(双网卡)
- delphi 数据类型转换
- java 和 .net 加密
- .NET中的数据库连接用的类
- 使用Silverlight 3实现3D三维立体图像
- 软件开发中"句柄"的意义!!
- SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY的比较
- sql server中用convert函数将日期型字段转换成字符串
- asp 分页页面
- Linux内核驱动模块
- 在VC++项目中为MDI主框架窗口添加位图(通过截获MDICLIENT的WM_PAINT消息)