TripleDES加解密Java、C#、php
- package com.jaamy.common.util;
- import javax.crypto.Cipher;
- import javax.crypto.SecretKey;
- import javax.crypto.spec.SecretKeySpec;
- import org.apache.commons.codec.binary.Base64;
- public class DefaultEncryptor {
- private static final String ALGORITHM = "DESede";
- //默认为 DESede/ECB/PKCS5Padding
- private static final String CIPHER_TRANSFORMAT = "DESede/ECB/PKCS5Padding";
- private static final String ENCODING = "UTF-8";
- public static String encryptToBase64(String plainText, String key) throws Exception {
- SecretKey deskey = new SecretKeySpec(key.getBytes(), ALGORITHM);
- Cipher c1 = Cipher.getInstance(CIPHER_TRANSFORMAT);
- c1.init(Cipher.ENCRYPT_MODE, deskey);
- byte[] result = c1.doFinal(plainText.getBytes(ENCODING));
- return Base64.encodeBase64String(result);
- }
- public static String decryptFromBase64(String base64, String key) throws Exception {
- SecretKey deskey = new SecretKeySpec(key.getBytes(), ALGORITHM);
- Cipher c1 = Cipher.getInstance(CIPHER_TRANSFORMAT);
- c1.init(Cipher.DECRYPT_MODE, deskey);
- byte[] result = c1.doFinal(Base64.decodeBase64(base64));
- return new String(result, ENCODING);
- }
- }
C#代码:
- using System;
- using System.IO;
- using System.Security.Cryptography;
- using System.Security.Cryptography.X509Certificates;
- using System.Text;
- using System.Web;
- namespace DesEncryptor
- {
- class DefaultEncryptor
- {
- #region DES 加密
- public static string encryptToBase64(string plainText, string key)
- {
- try
- {
- // Create a MemoryStream.
- MemoryStream mStream = new MemoryStream();
- TripleDESCryptoServiceProvider tripleDESCryptoServiceProvider = new TripleDESCryptoServiceProvider();
- tripleDESCryptoServiceProvider.Key = Encoding.ASCII.GetBytes(key);
- tripleDESCryptoServiceProvider.Padding = PaddingMode.PKCS7;//补位
- tripleDESCryptoServiceProvider.Mode = CipherMode.ECB;//CipherMode.CBC
- CryptoStream cStream = new CryptoStream(mStream,
- tripleDESCryptoServiceProvider.CreateEncryptor(),
- CryptoStreamMode.Write);
- // Convert the passed string to a byte array.
- byte[] toEncrypt = Encoding.UTF8.GetBytes(plainText);
- // Write the byte array to the crypto stream and flush it.
- cStream.Write(toEncrypt, , toEncrypt.Length);
- cStream.FlushFinalBlock();
- // Get an array of bytes from the
- // MemoryStream that holds the
- // encrypted data.
- byte[] ret = mStream.ToArray();
- // Close the streams.
- cStream.Close();
- mStream.Close();
- // Return the encrypted buffer.
- return Convert.ToBase64String(ret);
- }
- catch (CryptographicException e)
- {
- Console.WriteLine("A Cryptographic error occurred: {0}", e.Message);
- return null;
- }
- }
- #endregion
- #region DES解密
- public static string decryptFromBase64(string base64, string key)
- {
- try
- {
- byte[] inputByteArray = Convert.FromBase64String(base64);
- // Create a new MemoryStream using the passed
- // array of encrypted data.
- MemoryStream msDecrypt = new MemoryStream(inputByteArray);
- // Create a CryptoStream using the MemoryStream
- TripleDESCryptoServiceProvider tripleDESCryptoServiceProvider = new TripleDESCryptoServiceProvider();
- tripleDESCryptoServiceProvider.Key = ASCIIEncoding.ASCII.GetBytes(key);
- tripleDESCryptoServiceProvider.Padding = PaddingMode.PKCS7;//补位
- tripleDESCryptoServiceProvider.Mode = CipherMode.ECB;//CipherMode.CBC
- CryptoStream csDecrypt = new CryptoStream(msDecrypt,
- tripleDESCryptoServiceProvider.CreateDecryptor(),
- CryptoStreamMode.Read);
- // Create buffer to hold the decrypted data.
- byte[] fromEncrypt = new byte[inputByteArray.Length];
- // Read the decrypted data out of the crypto stream
- // and place it into the temporary buffer.
- csDecrypt.Read(fromEncrypt, , fromEncrypt.Length);
- //Convert the buffer into a string and return it.
- return Encoding.UTF8.GetString(fromEncrypt).TrimEnd('\0');
- }
- catch (CryptographicException e)
- {
- Console.WriteLine("A Cryptographic error occurred: {0}", e.Message);
- return null;
- }
- }
- #endregion
- }
- }
PHP代码:
- <?php
- class CryptDes {
- function encrypt($input, $key){
- $size = mcrypt_get_block_size(MCRYPT_3DES,MCRYPT_MODE_ECB);
- $input = $this->pkcs5_pad($input, $size);
- $key = str_pad($key,,'');
- $td = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_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 decrypt($encrypted, $key){
- $encrypted = base64_decode($encrypted);
- $key = str_pad($key,,'');
- $td = mcrypt_module_open(MCRYPT_3DES,'',MCRYPT_MODE_ECB,'');
- $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)-});
- if ($pad > strlen($text)) {
- return false;
- }
- if (strspn($text, chr($pad), strlen($text) - $pad) != $pad){
- return false;
- }
- return substr($text, , - * $pad);
- }
- }
- $des = new CryptDes();
- $encrypt_str = $des->encrypt("","");//加密字符串
- echo $encrypt_str."\n";
- echo $decrypt_str = $des->decrypt($encrypt_str,"");//解密字符串
- ?>
TripleDES加解密Java、C#、php的更多相关文章
- TripleDES加解密Java、C#、php通用代码
TripleDES说明: TripleDES(3Des)和Des都是对称加密算法,TripleDes是Des加密算法的增强版本,这里主要说的是TripleDes加密算法的应用. 工作中 ...
- Rsa加解密Java、C#、php通用代码 密钥转换工具
之前发了一篇"TripleDes的加解密Java.C#.php通用代码",后面又有项目用到了Rsa加解密,还是在不同系统之间进行交互,Rsa在不同语言的密钥格式不一样,所以过程中主 ...
- Des加解密(Java端和Js端配套)解析
一.什么是DES加密 des对称加密,对称加密,是一种比较传统的加密方式,其加密运算.解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时,必须共同持有该密码( ...
- 自己实现简单的RSA秘钥生成与加解密(Java )
最近在学习PKI,顺便接触了一些加密算法.对RSA着重研究了一下,自己也写了一个简单的实现RSA算法的Demo,包括公.私钥生成,加解密的实现.虽然比较简单,但是也大概囊括了RSA加解密的核心思想与流 ...
- SM2的非对称加解密java工具类
maven依赖 <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov- ...
- AES 加解密 Java实现
package com.smt.cipher.symmetry; import java.nio.charset.Charset; import java.security.SecureRandom; ...
- 加解密---Java安全
一.概述 1.JCA(Java Cryptography Architecture) 提供基本的加密框架(消息摘要.数字签名......) 2.JCE(Java Cryptography Extens ...
- Java 加解密 AES DES TripleDes
package xxx.common.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.crypt ...
- Java拓展教程:文件DES加解密
Java拓展教程:文件加解密 Java中的加密解密技术 加密技术根据一般可以分为对称加密技术和非对称加密技术.对称加密技术属于传统的加密技术,它的加密和解密的密钥是相同的,它的优点是:运算速度快,加密 ...
随机推荐
- Scrapy 安装与使用
Scrapy的安装: 当前环境win10,python_3.6.4,64bit.在命令提示符窗口运行pip install Scrapy,出现以下结果: building 'twisted.test. ...
- Java 之 网络编程基础
一.软件结构 C/S 结构:全称为 Client/Server 结构,是指客户端和服务器结构.常见的程序有微信,QQ,迅雷等软件. B/S 结构:全称 Brower/Server 结构,是指浏览器和服 ...
- 在Linux中安装适用于arm64位的nodejs
# 安装适用于arm64位的nodejs runtime v10.16.3 mkdir /runtimes cd /runtimes wget https://nodejs.org/dist/v10. ...
- Redis未授权漏洞检测工具
Redis未授权检测小工具 #!/usr/bin/python3 # -*- coding: utf-8 -*- """ @Author: r0cky @Time: 20 ...
- 十年种树----小白的起点save
大家好,给大家介绍一下我自己.各平台通用ID:琴鬼白羊,男,一个24岁学习采矿工程的在读研究僧,一个24岁还在想学习计算机的小白. 非洲经济学家Dambisa Moyo在他的<dead aid& ...
- Gym - 102346D Denouncing Mafia 取k叶子节点使叶子到根覆盖节点数最大
给你一棵树 你可以取K条链 一条链为根到叶子的路径 问你K条链最多覆盖树上多少个节点 贪心的做 肯定是每次取最长链 但是取完最长链 一颗树就会变为若干个森林 我们要维护当前所有森林里的最长链 ans数 ...
- 网站添加logo图片
网站添加log图片 第一种方法 这里使用的图片一般为16*16大小的图片 <link rel="shortcut icon" href="http://xxx.xx ...
- LG3690 【模板】Link Cut Tree 和 SDOI2008 洞穴勘测
UPD:更新了写法. [模板]Link Cut Tree 给定n个点以及每个点的权值,要你处理接下来的m个操作.操作有4种.操作从0到3编号.点从1到n编号. 后接两个整数(x,y),代表询问从x到y ...
- PL/SQL复合类型
一.PL/SQL记录:一条记录. 可简化单行多列的数据的处理.当使用pl/sql记录时,应用开发人员即可以自定义记录类型和记录变量,也可以使用%rowtype属性直接定义记录变量. 1.当使用自定义的 ...
- GIT的创建和使用
1.创建git文件模式 https://www.cnblogs.com/wupeiqi/p/7295372.html 参考地址 先看这个 初始化仓库 git init 在本地新建一个rep ...