C# And Java 3DES加解密 ECB模式/PKCS7
c#:
/// <summary>   
    /// 完整    
    /// </summary>    
    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;    
    }
}
C# And Java 3DES加解密 ECB模式/PKCS7的更多相关文章
- java 与 c# 3des 加解密
		java 与 c# 3des 加解密 主要差异如下: 1. 对于待加密解密的数据,各自的填充模式不一样 C#的模式有:ANSIX923.ISO10126.None.PKCS7.Zero,而Jav ... 
- PHP版3DES加解密类
		<?php /** * * PHP版3DES加解密类 * * 可与java的3DES(DESede)加密方式兼容 * * @Author:蓝凤(ilanfeng.com) * * @versio ... 
- 3DES加解密【示例】
		代码 /** * 3DES加解密 */ public class DESedeUtils { private static final String ALGORITHM_MD5 = &qu ... 
- 3DES加解密类
		using System; using System.IO; using System.Security.Cryptography; using System.Text; namespace GT.C ... 
- Java Des加解密方法(c#加密Java解密)
		最近我们用Java把一个用.net编写的老系统重新做了翻版,但是登录还是用.net的登录.这样就会遇到一个比较棘手的问题,我们登录用的cookie信息都是.net用des加密的,但我们不得不用Java ... 
- 3DES 加解密
		using System; using System.IO; using System.Security.Cryptography; using System.Text; namespace Comm ... 
- 3DES加解密 C语言
		3DES(或称为Triple DES),它相当于是对每个数据块应用三次DES加密算法.3*8字节密钥. 设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,P代表明文,C代 ... 
- javascript JS CryptoJS DES加解密CBC模式与C#DES加解密相同互通
		我们只知道不同的语言解密要相互通用,就需要遵循相同的加密方式,然而在具体做技术预研的时候,就发现会遇到很多问题,网上找的资料也是比较片面,所以我踩了坑,并且把解决方案和相关资料源码提供出来,给需要的朋 ... 
- 3Des加解密 C#--->Java
		Java的Byte范围为-128至127,c#的Byte范围是0-255.核心是确定Mode和Padding,关于这两个的意思可以搜索3DES算法相关文章. C#采用CBC Mode,PKCS7 Pa ... 
随机推荐
- python与pip安装
			# Install pip for 2.7 and then python 2.7 itself sudo apt install python-pip sudo apt install python ... 
- Chap5:数字货币交易[《区块链中文词典》维京&甲子]
- python多线程相关知识点
			1. 信号量 信号机维护着一个计数器,指定可同时访问资源或者进入临界区的线程数.每次有一个线程获得信号机时,计数器-1.若计数器为0,其他线程就停止访问信号机 Semphore,是一种带计数的线程同步 ... 
- git忽略UserInterfaceState.xcuserstate
			使用sourceTree, 忽略 
- MonkeyRunner_批处理执行py文件
			新建bat文件,使用call调用monkeyrunner执行py脚本 @echo off echo begin testcase001 %time% %date%call monkeyrunner d ... 
- djaogo 图片上传与读取
			1.首先上传图片表单需<form method="POST" enctype="multipart/form-data">2.视图py 中获取片名字 ... 
- sublime phpfmt 的格式化
			php格式化有几种,这里只说phpfmt.这个插件只支持php7.0+,所以在安装php环境应该支持php7.0.至于低版本,在packagecontrol.io对应的插件页面也又提到. 在subli ... 
- python中的list以及list与array相互转换
			python中的list是一种有序集合,可以随时增删元素: # -*- coding: utf-8 -*- frameID = 1 frameID_list = [] frameID_list.app ... 
- The each() function is deprecated报错的解决方法
			下午ytkah安装程序时出现了如下提示,意思是each函数过时了,可能跟php版本有关,因为今天早上刚把LAMP组件升级了,php升到7.2了,切换成php 7.1版本,提示消失了,可见PHP 7.2 ... 
- Scala的apply unapply unapplySeq 语法糖
			apply 可以理解为注入 unapply unapplySeq 可以理解为提取 apply 与 unapply 虽然名字相近,但是使用起来区别挺大.apply有点像构造函数unapply主要是结合模 ... 
