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 = "12345678";

String value="test1234 ";

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 = "12345678";

#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);

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 + "
" + 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 des_DES加密解密 JAVA与.NET互通程序代码相关推荐

  1. java 文件进行加密解密,java 对文件加密解密,该如何解决

    java 对文件加密解密 本帖最后由 Hong_1993 于 2014-09-03 10:51:35 编辑 我现在想做一个基于spring mvc 模式的 实现对  文件或目录文件   的加解密(de ...

  2. java 3des_如何用Java进行3DES加密解密 java实现3des加密解密教程

    3des,全称为3DESede或TripleDES,中文解释为是三重数据加密,用户可以通过通过对DES算法进行改进,针对每个数据块进行三次DES加密,下面小编为你带来java实现3des加密解密教程! ...

  3. Java常见的加密解密

    Java常见的加密解密 不可逆加密 介绍 应用场景 一致性验证 MD5 可以为文件传输场景中,提供文件的一致性验证. 例如,文件服务器预先提供一个 MD5 校验值,用户下载完文件以后,用 MD5 算法 ...

  4. 条理清晰的入门:使用Java实现RSA加密解密

    条理清晰的入门:使用Java实现RSA加密解密 什么是RSA 使用Java 需要导入的头文件 生成公钥.私钥 进行加密解密 密钥的存储 密文的存储.读取 什么是RSA 翻一下以前的密码学笔记,找到了! ...

  5. php与java的des加密解密

    与第三方接口对接des加密.解密,第三方提供java的des加密解密demo,特记录PHP与java加密解密. import javax.crypto.*; import javax.crypto.s ...

  6. 凯撒密码加密解密——Java代码(密码学)

    凯撒密码加密解密--Java代码(密码学) 凯撒密码: 恺撒密码(英语:Caesar cipher),或称恺撒加密.恺撒变换.变换加密,是一种最简单且最广为人知的加密技术.它是一种替换加密的技术,明文 ...

  7. java php aes加密解密_php aes 加密解密可与java对接

    php aes 加密解密可与java对接 博主:liu1693 发表时间:2017-02-23 16:52:27 浏览量:100 class Encrypt{ //加密方法 public static ...

  8. java 实现 DES加密 解密算法

    DES算法的入口参数有三个:Key.Data.Mode.其中Key为8个字节共64位,是DES算法的工作密钥:Data也为8个字节64位,是要被加密或被解密的数据:Mode为DES的工作方式,有两种: ...

  9. 【Android 安全】DEX 加密 ( Java 工具开发 | 加密解密算法 API | 编译代理 Application 依赖库 | 解压依赖库 aar 文件 )

    文章目录 一.加密解密算法 API 二.编译代理 Application 依赖库 三.解压代理 Application 依赖库 aar 文件 参考博客 : [Android 安全]DEX 加密 ( 常 ...

最新文章

  1. 图解Google Android内核编译教程
  2. 13个对Android开发者有帮助的工具和资源(转自android吧(www.and8.com))
  3. python pip如何安装wheel文件?.whl(pip install [wheel])
  4. Apollo后台配置:关联公共Namespace(类似与继承父类配置)
  5. 智慧交通day04-特定目标车辆追踪02:Siamese网络+单样本学习
  6. 从0到1使用VUE-CLI3开发实战(五):模块化VUEX及使用vuetify
  7. ZooKeeper入门指南
  8. CentOS 下 Oracle 10g 安装 + 配置 全过程(图解)
  9. 按照特定名字批量创建文件夹
  10. 输出大于某个正整数n的最小的质数
  11. Android Studio kotlin代码莫名出现“lazy”,“arrayListOf”,“let”等关键字变红的问题
  12. 力扣438题找到字符串中所有字母异位词
  13. 如何成为数据科学家_成为数据科学家
  14. i3 8100安装服务器系统,i38100安装win7纯净版的图文教程
  15. 电脑重装系统按哪个键进入u盘启动项
  16. 什么是keep-alive?怎么去使用?简述keep-alive
  17. filters过滤器的简单使用
  18. 【Markdown】Markdown插入图片的完美解决方法
  19. java通过poi读取excel中的日期类型
  20. 【Qt】Q_INIT_RESOURCE的使用

热门文章

  1. 关于 NODE.js 并行线程 worker_threads 的使用与详解。
  2. python 操作系统学习_操作系统学习
  3. 安卓 usb音量调节_戴尔推出面向Teams和Zoom视频通话的USB-C免提适配器
  4. python升级到最新版本windows64位安装哪个包_手把手windows64位配置安装python2.7
  5. 连接真机开发安卓(Android)移动app MUI框架 完善购物车订单等页面——混合式开发(五)
  6. python学习-10 运算符1
  7. SpringBoot学习笔记(8):事物处理
  8. 二、配置数据源、SessionFactory、domain对象
  9. Linux 权限、磁盘操作命令-Linux基础环境命令学习笔记
  10. python string与list互转