dea_des ecb模式 java php c#实现
来源:互联网 发布:阿里旺旺营销软件 编辑:程序博客网 时间:2024/04/29 08:09
1.java
package com.egame.fee.sdk.pc.util;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.security.InvalidKeyException;import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import java.security.spec.InvalidKeySpecException;import javax.crypto.BadPaddingException;import javax.crypto.Cipher;import javax.crypto.IllegalBlockSizeException;import javax.crypto.NoSuchPaddingException;import javax.crypto.SecretKey;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESKeySpec;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;public class SecretUtilTools {public static String encryptForDES(String souce, String key) throws InvalidKeyException, NoSuchAlgorithmException, InvalidKeySpecException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException {// DES算法要求有一个可信任的随机数源SecureRandom sr = new SecureRandom();// 从原始密匙数据创建DESKeySpec对象DESKeySpec dks = new DESKeySpec(key.getBytes("UTF-8"));// 创建一个密匙工厂,然后用它把DESKeySpec转换成 一个SecretKey对象SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");SecretKey key1 = keyFactory.generateSecret(dks);// Cipher对象实际完成加密操作Cipher cipher = Cipher.getInstance("DES");// 用密匙初始化Cipher对象cipher.init(Cipher.ENCRYPT_MODE, key1, sr);// 现在,获取数据并加密byte encryptedData[] = cipher.doFinal(souce.getBytes("UTF-8"));// 通过BASE64位编码成字符创形式String base64Str = new BASE64Encoder().encode(encryptedData);return base64Str;}public static String decryptForDES(String souce, String key) throws InvalidKeyException, NoSuchAlgorithmException, InvalidKeySpecException, NoSuchPaddingException, IOException, IllegalBlockSizeException, BadPaddingException {// DES算法要求有一个可信任的随机数源SecureRandom sr = new SecureRandom();// 从原始密匙数据创建DESKeySpec对象DESKeySpec dks = new DESKeySpec(key.getBytes());// 创建一个密匙工厂,然后用它把DESKeySpec转换成 一个SecretKey对象SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");SecretKey key1 = keyFactory.generateSecret(dks);// Cipher对象实际完成加密操作Cipher cipher = Cipher.getInstance("DES");// 用密匙初始化Cipher对象cipher.init(Cipher.DECRYPT_MODE, key1, sr);// 将加密报文用BASE64算法转化为字节数组byte[] encryptedData = new BASE64Decoder().decodeBuffer(souce);// 用DES算法解密报文byte decryptedData[] = cipher.doFinal(encryptedData);return new String(decryptedData,"UTF-8");}}2.php
<?php class SecretUtilTools { //加密算法 function encryptForDES($input,$key) { $size = mcrypt_get_block_size('des','ecb'); $input = $this->pkcs5_pad($input, $size); $td = mcrypt_module_open('des', '', 'ecb', ''); $iv = @mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND); @mcrypt_generic_init($td, $key, $iv); $data = mcrypt_generic($td, $input); mcrypt_generic_deinit($td); mcrypt_module_close($td); $data = base64_encode($data); return $data; } //解密算法 function decryptForDES($encrypted,$key) { $encrypted = base64_decode($encrypted); $td = mcrypt_module_open('des','','ecb',''); //使用MCRYPT_DES算法,cbc模式 $iv = @mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND); $ks = mcrypt_enc_get_key_size($td); @mcrypt_generic_init($td, $key, $iv); //初始处理 $decrypted = mdecrypt_generic($td, $encrypted); //解密 mcrypt_generic_deinit($td); //结束 mcrypt_module_close($td); $y=$this->pkcs5_unpad($decrypted); return $y; } function pkcs5_pad ($text, $blocksize) { $pad = $blocksize - (strlen($text) % $blocksize); return $text . str_repeat(chr($pad), $pad); } function pkcs5_unpad($text) { $pad = ord($text{strlen($text)-1}); if ($pad > strlen($text)) { return false; } if (strspn($text, chr($pad), strlen($text) - $pad) != $pad) { return false; } return substr($text, 0, -1 * $pad); } } ?>
3.c#
using System;using System.IO;using System.Security.Cryptography;using System.Text;using System.Threading;public class SecretUtilTools { public string encryptForDES(string message, string key) { using (DESCryptoServiceProvider des = new DESCryptoServiceProvider()) { byte[] inputByteArray = Encoding.UTF8.GetBytes(message); des.Key = UTF8Encoding.UTF8.GetBytes(key); des.IV = UTF8Encoding.UTF8.GetBytes(key); des.Mode = System.Security.Cryptography.CipherMode.ECB; System.IO.MemoryStream ms = new System.IO.MemoryStream(); using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write)) { cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); cs.Close(); } string str = Convert.ToBase64String(ms.ToArray()); ms.Close(); return str; } } public string decryptForDES(string message, string key) { byte[] inputByteArray = Convert.FromBase64String(message); using (DESCryptoServiceProvider des = new DESCryptoServiceProvider()) { des.Key = UTF8Encoding.UTF8.GetBytes(key); des.IV = UTF8Encoding.UTF8.GetBytes(key); des.Mode = System.Security.Cryptography.CipherMode.ECB; System.IO.MemoryStream ms = new System.IO.MemoryStream(); using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write)) { cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); cs.Close(); } string str = Encoding.UTF8.GetString(ms.ToArray()); ms.Close(); return str; } } }
- dea_des ecb模式 java php c#实现
- DES ECB模式JAVA PHP C#实现加密、解密兼容
- AES Java加密 C#解密 (128-ECB加密模式)
- AES ECB加密实现(java/php/python)
- php中实现3DES算法(ECB加密模式PKCS5Padding填充)
- C#/JAVA/PHP 互通DES加解密算法(ECB模式支持8位)
- C/C++: 3DES-ECB模式加密,可以与C#和Java互通
- python 实现DES加密 ECB模式
- PHP--JAVA AES(ECB)加密解密
- java DES ECB模式对称加密解密
- java DES ECB模式对称加密解密
- php 与 CPP 共用aes,ecb模式加密
- golang实现AES ECB模式的加密和解密
- PHP和Java AES 128 ECB 加解密(PKCS5Padding)
- objective-c java C# 3DES ECB 加密
- 【转】 java DES ECB模式对称加密解密
- php,java实现代理模式
- php,java实现原型模式
- 搭建Openfire 3.8.1服务器
- win7 64位 PowerDesigner ODBC 连接 mysql 报Connection failed
- lucene学习,实现淘宝的分条件搜索的功能
- Ubuntu下,磁盘管理命令
- 11111
- dea_des ecb模式 java php c#实现
- Android电话系统之RIL-Java
- Linux学习笔记之pureftp(二)匿名用户
- Java线程学习笔记之Executor
- BigDecimal
- Java 计算两个日期相差的天数
- Linux学习笔记之pureftp(一)
- JAVA关于获得当前时间的几种处理方法
- struts2拦截器实现登录控制