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. 日志管理 rsyslog服务浅析

    http://www.xiaomastack.com/2014/11/13/rsyslog/

  2. Web开发接口测试工具——Postman插件的使用(chrome浏览器)

    Postman是chrome浏览器的一款插件.Postman 可以模拟 http 请求的发送,并自动解析 JSON 和 XML 的返回数据. 可以手动的去配置各类 parameter,还支持 Basi ...

  3. SQL Server压缩日志及数据库文件大小

    请按步骤进行,未进行前面的步骤时,请不要做后面的步骤,以免损坏你的数据库. 一般不建议做第4,6两步,第4步不安全,有可能损坏数据库或丢失数据.第6步如果日志达到上限,则以后的数据库处理会失败,在清理 ...

  4. Redis 集合(Set)

      Redis的Set是string类型的无序集合.集合成员是唯一的,这就意味着集合中不能出现重复的数据. Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1). 集合中最 ...

  5. 微软数学库XNAMATH(DirectXMath)

    这篇文章只是对着MSDN文档的一些吐槽和总结记录,个人笔记之类的 运行库与头文件 老实说,这个数学库微软还是更像蛮频繁的,我这里有的最早版本是伴随DX9的,在这个头文件里面 最近在使用DXUT,顺便也 ...

  6. C语言bool类型定义

    在我们的C语言程序中,经常用到布尔类型,但是C标准并不支持布尔类型,但我们可以自己实现其类型,实现代码如下:typedef enum{ false = 0, ture = !false}bool;

  7. Android 字体颜色在一些机型上不适配(textcolor失效)

    最近在参加一个创业项目的开发,其中在适配Android4.4版本时候遇到一个问题,本身title是白色字体,并且标签栏里面的字是绿色的,但是到了4.4手机上就变成了黑色. 也就是说textcolor并 ...

  8. [课程相关]homework-02

    一.如何组织代码 因为这个代码比较简单,用函数就足够了,个人觉得没必要用类,杀鸡不必用牛刀. 代码有点长,主要是加了很多判断参数的部分. 提取了一个公共的递归函数. 用了不少全局变量,可能当做参数传入 ...

  9. Android 自学之画廊视图(Gallery)功能和用法

    Gallery与之前讲的Spinner有共同的父类:AbsSpinner,表明Gallery和Spinner都是一个列表框.他们之间的区别在于Spinner显示的是一个垂直的列表框,而Gallery显 ...

  10. CSS text-transform 属性——转换文本的大小写格式

    可能的值 值 描述 none 默认.定义带有小写字母和大写字母的标准的文本. capitalize 文本中的每个单词以大写字母开头. uppercase 定义仅有大写字母. lowercase 定义无 ...