c#:

///

/// 完整

///

public class TripleDESHelper1

{

public static string Encrypt(string aStrString, string aStrKey, CipherMode mode = CipherMode.ECB, string iv = "12345678")

{

try

{

var des = new TripleDESCryptoServiceProvider

{

Key = Encoding.UTF8.GetBytes(aStrKey.Substring(0, 24)),//长度必须24个字节

Mode = mode

};

if (mode == CipherMode.ECB)

{

des.IV = Encoding.UTF8.GetBytes(iv);

}

var desEncrypt = des.CreateEncryptor();

byte[] buffer = Encoding.UTF8.GetBytes(aStrString);

return Convert.ToBase64String(desEncrypt.TransformFinalBlock(buffer, 0, buffer.Length));

}

catch (Exception e)

{

return string.Empty;

}

}

public static string Decrypt(string aStrString, string aStrKey, CipherMode mode = CipherMode.ECB, string iv = "12345678")

{

try

{

var des = new TripleDESCryptoServiceProvider

{

Key = Encoding.UTF8.GetBytes(aStrKey.Substring(0, 24)),//长度必须24个字节

Mode = mode,

Padding = PaddingMode.PKCS7

};

if (mode == CipherMode.CBC)

{

des.IV = Encoding.UTF8.GetBytes(iv);

}

var desDecrypt = des.CreateDecryptor();

var result = "";

byte[] buffer = Convert.FromBase64String(aStrString);

result = Encoding.UTF8.GetString(desDecrypt.TransformFinalBlock(buffer, 0, buffer.Length));

return result;

}

catch (Exception e)

{

return string.Empty;

}

}

}

public class TripleDESHelper

{

static byte[] IV = Encoding.UTF8.GetBytes("12345678");

public static string Encrypt(string content, string key)

{

try

{

var tDes = new TripleDESCryptoServiceProvider

{

Key = Encoding.UTF8.GetBytes(key.Substring(0, 24)),//长度必须24个字节

Mode = CipherMode.ECB,

IV = IV

};

var desEncrypt = tDes.CreateEncryptor();

byte[] buffer = Encoding.UTF8.GetBytes(content);

return Convert.ToBase64String(desEncrypt.TransformFinalBlock(buffer, 0, buffer.Length));

}

catch (Exception e)

{

return string.Empty;

}

}

public static string Decrypt(string content, string key)

{

try

{

var tDes = new TripleDESCryptoServiceProvider

{

Key = Encoding.UTF8.GetBytes(key.Substring(0, 24)),//长度必须24个字节

Mode = CipherMode.ECB,

Padding = PaddingMode.PKCS7

};

var desDecrypt = tDes.CreateDecryptor();

byte[] buffer = Convert.FromBase64String(content);

var result = Encoding.UTF8.GetString(desDecrypt.TransformFinalBlock(buffer, 0, buffer.Length));

return result;

}

catch (Exception e)

{

return string.Empty;

}

}

}

测试:

static void Main(string[] args)

{

//4C012206573169BF8E9F36BCF5D4125E      //YFjDtE5ywAM=

string key = "4C012206573169BF8E9F36BC5D4125E";

string content = "123";

var val2 = TripleDESHelper.Encrypt(content, key);

var val3 = TripleDESHelper.Decrypt(val2, key);

Console.WriteLine("over");

Console.Read();

}

JAVA:

package com.yfpal.mpay.util;

import java.security.Key;

import java.security.SecureRandom;

import javax.crypto.Cipher;

import javax.crypto.SecretKey;

import javax.crypto.SecretKeyFactory;

import javax.crypto.spec.DESedeKeySpec;

import org.apache.commons.codec.binary.Base64;

public class DesUtil {

/**

* 3DES加密

*

* @param data

*            数据

* @param key

*            密钥

* @return

*/

public static String encode(String data, String key) {

try {

DESedeKeySpec dks = new DESedeKeySpec(key.getBytes());

SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");

Key secretKey = keyFactory.generateSecret(dks);

Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");

cipher.init(Cipher.ENCRYPT_MODE, secretKey, new SecureRandom());

return Base64.encodeBase64String(cipher.doFinal(data.getBytes("utf-8")));

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

public static void main(String[] args) {

String minganKey = "OPJURIZFIWZWJIFDNXUXWSMFILOCLJQK";

System.out.println(minganKey);

System.out.println("dy9OMCtSK1ZoZ0FMUDZOWjUwQ2tlLzZvN2xKNVN4bFMwSFQ0YVY0QXBWUHAzYW84YjViWS9ydEY2U1JEUjlmV1hkcjhYMG1veGs3QXdzSmxHQ0QxNno3NXhha3hxdlkyN0U5U0EyQWxKNUk9".length());

String s=decode("dy9OMCtSK1ZoZ0FMUDZOWjUwQ2tlLzZvN2xKNVN4bFMwSFQ0YVY0QXBWUHAzYW84YjViWS9ydEY2U1JEUjlmV1hkcjhYMG1veGs3QXdzSmxHQ0QxNno3NXhha3hxdlkyN0U5U0EyQWxKNUk9", minganKey);

System.out.println(s);

}

/**

* 3DES解密

*

* @param key

*            密钥

* @param data

*            密文

* @return

*/

public static String decode(String data, String key) {

try {

Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");

DESedeKeySpec dks = new DESedeKeySpec(key.getBytes());

SecretKey sk = SecretKeyFactory.getInstance("DESede").generateSecret(dks);

cipher.init(Cipher.DECRYPT_MODE, sk);

byte[] result = cipher.doFinal(Base64.decodeBase64(data));

return new String(result, "utf-8");

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

public static byte[] hexStringToByteArray(String text) {

if (text == null)

return null;

byte[] result = new byte[text.length() / 2];

for (int i = 0; i < result.length; ++i) {

int x = Integer.parseInt(text.substring(i * 2, i * 2 + 2), 16);

result[i] = x <= 127 ? (byte) x : (byte) (x - 256);

}

return result;

}

public static String byteArrayToHexString(byte data[]) {

String result = "";

for (int i = 0; i < data.length; i++) {

int v = data[i] & 0xFF;

String hv = Integer.toHexString(v);

if (hv.length() < 2) {

result += "0";

}

result += hv;

}

return result;

}

}

3des java ecb_C# And Java 3DES加解密 ECB模式/PKCS7相关推荐

  1. AES加解密(ECB模式)

    AES加密是对称的,对称加密是啥?公钥和密钥是一个,一个密钥可以用它来加密数据和解密数据,安全性低于非对称加密. 非对称加密是啥?甲方生成一对密钥并将公钥公开,需要向甲方发送信息的其他角色(乙方)使用 ...

  2. java pkcs#11读取证书加解密(初学-分享)

    java pkcs#11读取证书加解密(初学-分享) http://www.cnblogs.com/sunfb/archive/2013/02/28/2937227.html 插入USB-KEY, 想 ...

  3. SpringBoot+Vue中使用AES进行加解密(加密模式等对照关系)

    场景 若依前后端分离版本地搭建开发环境并运行项目的教程: 若依前后端分离版手把手教你本地搭建环境并运行项目_霸道流氓气质的博客-CSDN博客 在上面搭建起来前后端架构之后,在前后端分别进行AES方式的 ...

  4. encodingaeskey java,消息体签名与加解密-开发者QA

    Q 为什么要上线消息加密功能? A 为了更好的保护用户和公众账号的信息安全. Q 接入消息加解密功能复杂吗? A 开发者接入消息加解密功能并不复杂,微信团队提供了5种语言的示例代码(包括C++.php ...

  5. java C# objective-c AES对称加解密

    1 /** 2 * AES加解密 3 */ 4 public class AESHelper { 5 final static String AES_KEY = "43hr8fhu34b58 ...

  6. Java实现非对称加密算法-RSA加解密

    RSA是由三位数学家Rivest.Shamir 和 Adleman 发明的非对称加密算法,这种算法非常可靠,秘钥越长,就越难破解. 目前被破解的最长RSA秘钥是768个二进制位,长度超过768位的秘钥 ...

  7. Java实现对称加密算法-AES加解密

    AES(Advanced Encryption Standard)意思是高级加密标准,是一种区块加密标准.这个标准用来替代原先的DES,且已经被广泛使用. DES使用56位密钥,所以比较容易被破解. ...

  8. Java 实现 RSA 非对称加密算法-加解密和签名验签

    1. 非对称加密算法简介 非对称加密算法又称现代加密算法,是计算机通信安全的基石,保证了加密数据不会被破解.与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密(pr ...

  9. Java批量高效压缩支持加解密支持所有压缩格式(Zip/7z/rar)

    前言:有时候需要对很多文件进行压缩,几个还好如果有100个呢对吧,为什么不借助咱们强大的java呢,所以我就写了一个可以批量压缩,支持所有压缩格式的工具类当然也支持加密和解密,下面就是工具类的代码 废 ...

最新文章

  1. JS改变input的value值不触发onchange事件解决方案 (转)
  2. 如何用纯 CSS 创作一个精彩的彩虹 loading 特效
  3. STM32F4_LCD12864并行驱动
  4. 计算机视觉与深度学习 | 视觉里程计综述(框架+算法)
  5. 如何搭建高接通率的音视频场景?
  6. Cpp 对象模型探索 / 成员初始化列表
  7. 牛客 - Dance with a stick(大风车模型)
  8. 高频hf调制方式_收藏!AM的三种调制电路
  9. 【剑指offer】字符串的排列
  10. [深度学习-TF2实践]应用Tensorflow2.x训练DenseNet模型在Cifar10数据上,测试集准确率90.07%
  11. 河神,不用砍死那个天秤座的男孩了
  12. vue add element报错_Vue 源码解析 -- new Vue -gt; mountComponent 001
  13. 将数学模型用matlab,matlab课件第3章_控制系统的数学模型及其转换.ppt
  14. 【机器学习Machine Learning】资料大全
  15. gbase oracle mysql_项目从Oracle数据迁移到GBase数据库时解决适配遇到的问题
  16. Ubuntu下常用软件介绍
  17. KRKR基础篇(二)
  18. 上海升级为欧莱雅集团北亚区总部;西门子与太古可口可乐将共同打造18座数字化工厂 | 美通企业日报...
  19. 关于寒武纪的前世今生与未来
  20. _032_rationalRose_包图的画法

热门文章

  1. golang数据结构初探之字典map
  2. HTML网页调用 网易云 音乐播放器代码
  3. java设计模式(13-19节)
  4. 合天网安实验室CTF-解密100-Funny Crypto
  5. 为什么字节跳动的年薪50万的软件测试工程师遍地都是?
  6. fmod文档解析音频_将音频插入Word 2007文档
  7. 操作系统磁盘调度算法
  8. 2018_AAAI_Social Recommendation with an Essential Preference Space—(AAAI, 2018)
  9. 如何防止恶意扫码点餐
  10. Presto常用语句整理