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. c++中的强制转换static_cast、dynamic_cast、reinterpret_cast的不同用法儿

    c++中的强制转换static_cast.dynamic_cast.reinterpret_cast的不同用法儿   虽然const_cast是用来去除变量的const限定,但是static_cast ...

  2. MySQL 5.7 参数 – log_timestamps

    http://www.ttlsa.com/mysql/mysql-5-7-kengdieparam-log_timestamps/ 官网原话: This variable was added in M ...

  3. 调用AutoCAD的内置对话框

    如何将CAD的内置对话框(如style命令所用的文字样式对话框)作为当前对话框的子对话框调出? 常用的几个对话框对应的函数为:1.尺寸标注样式编辑对话框:int acedEditDimstyleInt ...

  4. PAT 1002

    1002. A+B for Polynomials (25) This time, you are supposed to find A+B where A and B are two polynom ...

  5. Android中常用适配器及定义自己的适配器

    转载:http://blog.chinaunix.net/uid-11898547-id-3303153.html http://www.tudou.com/home/_328390108/item ...

  6. 实例源码--Android底部功能分类Tab使用实例

    下载源码 技术要点:  1.底部功能布局实例 2.TAB使用详细实例 3.详细的源码注释 ...... 详细介绍: 1. 底部功能布局实例 底部功能布局是开发过程中常用到布局,本实例用TAB的方式实现 ...

  7. cocos2dx 背景用小尺寸图片滚动填充的方法

    直接上代码 在初始化方法中添加图片: bool BackGroundLayer::init() { frameCache=CCSpriteFrameCache::sharedSpriteFrameCa ...

  8. RPC框架Thrift例子-PHP调用C++后端程序

    更新 2016-02-22: Response对象不用主动创建. 前言 前段时间用了一下Facebook的开源RPC框架Thrift,做PHP客户端调用C++后端程序,真心觉得Thrift不错! 本文 ...

  9. poj1068解题报告(模拟类)

    POJ 1068,题目链接http://poj.org/problem?id=1068 题意: 对于给出给出的原括号串S,对应两种数字密码串P.W: S         (((()()()))) P- ...

  10. 数据结构笔记02:Java面试必问算法题

    1. 面试的时候,栈和队列经常会成对出现来考察.本文包含栈和队列的如下考试内容: (1)栈的创建 (2)队列的创建 (3)两个栈实现一个队列 (4)两个队列实现一个栈 (5)设计含最小函数min()的 ...