require_once "JunDes.php";

$jDes=new JunDes();
echo $jDes->encode('98765'); //echo $jDes->key_64;
//echo $jDes->iv_64;
<?php
/**
* Created by PhpStorm.
* User: yanjun
* Date: 17/1/4
* Time: 10:43
*/
class JunDes { private static $_instance = NULL; public $key_64='5432';
public $iv_64='987654'; function toMd5($str)
{
return substr(strtoupper(md5($str)),0,8);
} /**
* @return JoDES
*/
public static function share() {
if (is_null(self::$_instance)) {
self::$_instance = new JoDES();
}
return self::$_instance;
} /**
* 加密
* @param string $str 要处理的字符串
* @param string $key 加密Key,为8个字节长度
* @return string
*/
public function encode($str) {
$size = mcrypt_get_block_size(MCRYPT_DES, MCRYPT_MODE_CBC);
$str = $this->pkcs5Pad($str, $size);
$aaa = mcrypt_cbc(MCRYPT_DES, $this->toMd5($this->key_64), $str, MCRYPT_ENCRYPT, $this->toMd5($this->iv_64));
$ret = base64_encode($aaa);
return $ret;
} /**
* 解密
* @param string $str 要处理的字符串
* @param string $key 解密Key,为8个字节长度
* @return string
*/
public function decode($str, $key) {
$strBin = base64_decode($str);
$str = mcrypt_cbc(MCRYPT_DES, $this->toMd5($this->key_64), $strBin, MCRYPT_DECRYPT, $this->toMd5($this->iv_64));
$str = $this->pkcs5Unpad($str);
return $str;
} function hex2bin($hexData) {
$binData = "";
for ($i = 0; $i < strlen($hexData); $i += 2) {
$binData .= chr(hexdec(substr($hexData, $i, 2)));
}
return $binData;
} function pkcs5Pad($text, $blocksize) {
$pad = $blocksize - (strlen($text) % $blocksize);
return $text . str_repeat(chr($pad), $pad);
} function pkcs5Unpad($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);
}
}

C#

public class MyDes
{ //加密/解密钥匙
static string KEY_64 = ToMD5("");//注意了,是8个字符,64位
static string IV_64 = ToMD5("");//注意了,是8个字符,64位 #region MD5加密
/// <summary>
/// 转换MD5密码
/// </summary>
/// <param name="pass"></param>
/// <returns></returns>
public static string ToMD5(string KEY)
{
byte[] result = Encoding.Default.GetBytes(KEY);
MD5 md5 = new MD5CryptoServiceProvider();
byte[] output = md5.ComputeHash(result); string KEY_64 = BitConverter.ToString(output).Replace("-", "").Substring(, );
return KEY_64; }
#endregion /// <summary>
/// DES加密方法
/// </summary>
/// <param name="strPlain">明文</param>
/// <param name="strDESKey">密钥</param>
/// <param name="strDESIV">向量</param>
/// <returns>密文</returns>
public static string Encode(string source)
{
StringBuilder sb = new StringBuilder();
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
{
byte[] key = ASCIIEncoding.ASCII.GetBytes(KEY_64);
byte[] iv = ASCIIEncoding.ASCII.GetBytes(IV_64);
byte[] dataByteArray = Encoding.UTF8.GetBytes(source);
des.Mode = System.Security.Cryptography.CipherMode.CBC;
des.Key = key;
des.IV = iv;
string encrypt = "";
using (MemoryStream ms = new MemoryStream())
using (CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
{
cs.Write(dataByteArray, , dataByteArray.Length);
cs.FlushFinalBlock();
encrypt = Convert.ToBase64String(ms.ToArray());
}
return encrypt;
}
} /// <summary>
/// 进行DES解密。
/// </summary>
/// <param name="pToDecrypt">要解密的base64串</param>
/// <param name="sKey">密钥,且必须为8位。</param>
/// <returns>已解密的字符串。</returns>
public static string Decode(string source)
{
byte[] inputByteArray = System.Convert.FromBase64String(source);//Encoding.UTF8.GetBytes(source);
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider())
{
des.Key = ASCIIEncoding.ASCII.GetBytes(KEY_64);
des.IV = ASCIIEncoding.ASCII.GetBytes(IV_64);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
using (CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
{
cs.Write(inputByteArray, , inputByteArray.Length);
cs.FlushFinalBlock();
cs.Close();
}
string str = Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
return str;
}
}
}

方式2

/// <summary>
/// 加密/解密类
/// </summary>
public class EncAndDec
{
//加密/解密钥匙
const string KEY_64 = "";//注意了,是8个字符,64位
const string IV_64 = "";//注意了,是8个字符,64位 const string ClientLocal_KEY_64 = "";
const string ClientLocal_IV_64 = ""; /// <summary>
/// 加密的方法,通过2个密匙进行加密
/// </summary>
/// <param name="data">加密的数据</param>
/// <returns>返回加密后的字符串</returns>
public static string Encode(string data)
{
EncAndDec ed = new EncAndDec();
return ed.Encode(data, KEY_64, IV_64);
}
/// <summary>
/// 解密的方法
/// </summary>
/// <param name="data">解密的数据</param>
/// <returns>返回加密前的字符串</returns>
public static string Decode(string data)
{
EncAndDec ed = new EncAndDec();
return ed.Decode(data, KEY_64, IV_64);
} /// <summary>
/// 客户本地加密的方法,通过2个密匙进行加密
/// </summary>
/// <param name="data">加密的数据</param>
/// <returns>返回加密后的字符串</returns>
public static string EncodeClientLocal(string data)
{
EncAndDec ed = new EncAndDec();
return ed.Encode(data, ClientLocal_KEY_64, ClientLocal_IV_64);
}
/// <summary>
/// 客户本地解密的方法
/// </summary>
/// <param name="data">解密的数据</param>
/// <returns>返回加密前的字符串</returns>
public static string DecodeClientLocal(string data)
{
EncAndDec ed = new EncAndDec();
return ed.Decode(data, ClientLocal_KEY_64, ClientLocal_IV_64);
} #region DEC加密的方法
/// <summary>
/// 加密的方法,通过2个密匙进行加密
/// </summary>
/// <param name="data">通过Md5加密一次</param>
/// <param name="KEY_64"></param>
/// <param name="IV_64"></param>
/// <returns></returns>
private string Encode(string data, string KEY_64, string IV_64)
{ KEY_64 = ToMD5(KEY_64);
IV_64 = ToMD5(IV_64);
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64); DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
//int i = cryptoProvider.KeySize;
MemoryStream ms = new MemoryStream();
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write); StreamWriter sw = new StreamWriter(cst);
sw.Write(data);
sw.Flush();
cst.FlushFinalBlock();
sw.Flush();
return Convert.ToBase64String(ms.GetBuffer(), , (int)ms.Length); }
/// <summary>
/// 解密的方法()
/// </summary>
/// <param name="data"></param>
/// <param name="KEY_64"></param>
/// <param name="IV_64"></param>
/// <returns></returns>
private string Decode(string data, string KEY_64, string IV_64)
{
KEY_64 = ToMD5(KEY_64);
IV_64 = ToMD5(IV_64);
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64); byte[] byEnc;
try
{
byEnc = Convert.FromBase64String(data);
}
catch
{
return null;
} DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
MemoryStream ms = new MemoryStream(byEnc);
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
StreamReader sr = new StreamReader(cst);
return sr.ReadToEnd();
}
#endregion #region MD5加密
/// <summary>
/// 转换MD5密码
/// </summary>
/// <param name="pass"></param>
/// <returns></returns>
public static string ToMD5(string KEY)
{
byte[] result = Encoding.Default.GetBytes(KEY);
MD5 md5 = new MD5CryptoServiceProvider();
byte[] output = md5.ComputeHash(result); string KEY_64 = BitConverter.ToString(output).Replace("-", "").Substring(, );
return KEY_64; }
#endregion }

C#,PHP对应加密函数的更多相关文章

  1. (转)笔记320 SQLSERVER中的加密函数 2013-7-11

    1 --SQLSERVER中的加密函数 2013-7-11 2 ENCRYPTBYASYMKEY() --非对称密钥 3 ENCRYPTBYCERT() --证书加密 4 ENCRYPTBYKEY() ...

  2. PHP的几个常用加密函数

    在php的开发过程中,常常需要对部分数据(如用户密码)进行加密 一.加密类型: 1.单向散列加密 就是把任意长度的信息进行散列计算,得到固定长度的输出,这个散列计算过程是单向的,即不能对固定长度的输出 ...

  3. PHP的几个常用加密函数(转载 https://jellybool.com/post/php-encrypt-functions)

    PHP的几个常用加密函数 在网站的开发过程中,常常需要对部分数据(如用户密码)进行加密,本文主要介绍PHP的几个常见的加密函数 MD5加密: string md5 ( string $str [, b ...

  4. (转载)MS SQL Server 未公开的加密函数有哪些?

    MS SQL Server 未公开的加密函数有哪些? 以下的文章是对MS SQL Server 未公开的加密函数的具体操作,如果你对其相关的实际操作有兴趣的话,你就可以点击了. MS SQL Serv ...

  5. ThinkPHP第二十五天(自动完成、用户名密码PHP正则、移位或加密函数)

    1.ThinkPHP自动完成功能 跟昨天的自动验证功能类似,也是需要在自定义的UserModel类,进行使用. 使用方法:定义$_auto属性 $_auto = array( array(完成字段,完 ...

  6. PHP的几个常用加密函数【转载】

    转自 https://jellybool.com/post/php-encrypt-functions 在网站的开发过程中,常常需要对部分数据(如用户密码)进行加密,本文主要介绍PHP的几个常见的加密 ...

  7. 网上搜集的一段php可逆加密函数

    php加密函数: function my_encrypt($data, $key='unun.in') { $char = $str = ''; $key = md5($key); $x = 0; $ ...

  8. 一个简洁的PHP可逆加密函数(分享)

    http://www.jb51.net/article/38018.htm 本篇文章是对一个简洁的PHP可逆加密函数进行了详细的分析介绍,需要的朋友参考下   很多时候我们需要对数据进行加密解密,比如 ...

  9. 常用的几个PHP加密函数

    1.前言 PHP加密方式分为单项散列加密,对称加密,非对称加密这几类. 像常用的MD5.hash.crypt.sha1这种就是单项散列加密,单项散列加密是不可逆的. 像URL编码.base64编码这种 ...

  10. php提供的用户密码加密函数

    在实际项目中,对用户的密码加密基本上采用的  md5加盐的方式, php5.5后提供了一个加密函数,不需要手动加盐,不需要去维护盐值, $str = "123456"; $pwd ...

随机推荐

  1. HDFS原理讲解

    简介 本文是笔者在学习HDFS的时候的学习笔记整理, 将HDFS的核心功能的原理都整理在这里了. [广告] 如果你喜欢本博客,请点此查看本博客所有文章:http://www.cnblogs.com/x ...

  2. btn控件

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  3. Redis 列表(List)

    Redis列表是简单的字符串列表,按照插入顺序排序.你可以添加一个元素导列表的头部(左边)或者尾部(右边) 一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个 ...

  4. 支持https请求以及https请求的抓包

    iOS9推出的时候,苹果希望大家使用https协议,来提高数据传输之间的安全性.下面我就从最简单的代码介绍,如何在工程中设置,来支持https的请求. 一.证书准备篇 1.证书转换 在服务器人员,给你 ...

  5. javaweb学习总结十九(http协议概述以及http请求信息分析)

    一:http协议概述 1:http协议定义 2:使用telnet程序连接web服务器,获取资源 3:http协议:超文本传输协议,它是基于tcp/ip协议,就是建立在tcp/ip之上工作的, http ...

  6. mysql 修改 character_set_database 编码格式

    操作系统:win10  x64 Server version : 5.5.46 MySQL Community Server (GPL) mysql 修改 character_set_database ...

  7. SharePoint 2013 网站定义中添加页面布局

    今天在Visual Studio 2012中将页面布局打包到网站定义中. 新建Module “MasterPageGallary” 在Element中如下: <Elements xmlns=&q ...

  8. 【WebKit】---WebKit的CSS扩展(WebKit是私有属性)

    1.-webkit-touch-callout 当你触摸并按住触摸目标时候,禁止或显示系统默认菜单.在iOS上,当你触摸并按住触摸的目标,比如一个链接,Safari浏览器将显示链接有关的系统默认菜单. ...

  9. Slickflow.NET 开源工作流引擎基础介绍(三) -- 基于HTML5/Bootstrap的Web流程设计器

    1. Slickflow Designer 技术优势 1) 基于HTML5技术,兼容常见浏览器; 2) 纯Javascript / JsPlumb 脚本实现SVG图形化显示; JsPlumb允许您使用 ...

  10. 面试之C#--垃圾回收器什么时候回收?

    每个对象只有在该对象不存在任何引用才会被垃圾回收起回收. 可以调用静态方法System.GC.Collect()垃圾回收器,但是不建议这么做: 用using语句可以有效的自动释放掉资源. 实在没有办法 ...