全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

php实现和c#一致的DES加密解密实例

PHP实现和c#一致的DES加密解密,可以从网上搜到一大堆,但是测试后发现都没法用。以下正确代码是我经过苦苦才找到的。希望大家在系统整合时能用的上。

注意:key的长度为8位以内。

//C# 版DES 加解密算法 
using System;   
using System.Data;   
using System.Configuration;   
using System.Web;   
using System.Web.Security;   
using System.Web.UI;   
using System.Web.UI.WebControls;   
using System.Web.UI.WebControls.WebParts;   
using System.Web.UI.HtmlControls;   
using System.Data.SqlClient;   
using System.Security.Cryptography;   
using System.IO;   
using System.Text;   
public class Des{   
  //加解密密钥 
  private static string skey = "12345678"; 
  //初始化向量 
  private static byte[] DESIV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };  
  
        #region DESEnCode DES加密   
        public static string DESEnCode(string pToEncrypt, string sKey)   
        {   
          pToEncrypt = HttpContext.Current.Server.UrlEncode(pToEncrypt);   
          DESCryptoServiceProvider des = new DESCryptoServiceProvider();   
          byte[] inputByteArray = Encoding.GetEncoding("UTF-8").GetBytes(pToEncrypt);   
         
          //建立加密对象的密钥和偏移量   
          //原文使用ASCIIEncoding.ASCII方法的GetBytes方法   
          //使得输入密码必须输入英文文本   
          des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);   
          des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);   
          MemoryStream ms = new MemoryStream();   
          CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);   
         
          cs.Write(inputByteArray, 0, inputByteArray.Length);   
          cs.FlushFinalBlock();   
         
          StringBuilder ret = new StringBuilder();   
          foreach (byte b in ms.ToArray())   
          {   
            ret.AppendFormat("{0:X2}", b);   
          }   
          ret.ToString();   
          return ret.ToString();   
        }  
        #endregion  
        /// <summary> 
        ///  
        /// </summary> 
        /// <param name="pToDecrypt"> 待解密的字符串</param> 
        /// <param name="sKey"> 解密密钥,要求为8字节,和加密密钥相同</param> 
        /// <returns>解密成功返回解密后的字符串,失败返源串</returns> 
        #region DESDeCode DES解密 
        public static string DESDeCode(string pToDecrypt, string sKey) 
        { 
          //  HttpContext.Current.Response.Write(pToDecrypt + "<br>" + sKey);   
          //  HttpContext.Current.Response.End();   
          DESCryptoServiceProvider des = new DESCryptoServiceProvider(); 
        
          byte[] inputByteArray = new byte[pToDecrypt.Length / 2]; 
          for (int x = 0; x < pToDecrypt.Length / 2; x++) 
          { 
            int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16)); 
            inputByteArray[x] = (byte)i; 
          } 
        
          des.Key = ASCIIEncoding.ASCII.GetBytes(sKey); 
          des.IV = ASCIIEncoding.ASCII.GetBytes(sKey); 
          MemoryStream ms = new MemoryStream(); 
          CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write); 
          cs.Write(inputByteArray, 0, inputByteArray.Length); 
          cs.FlushFinalBlock(); 
        
          StringBuilder ret = new StringBuilder(); 
        
          return HttpContext.Current.Server.UrlDecode(System.Text.Encoding.Default.GetString(ms.ToArray())); 
        } 
  #endregion  
}  
<?php 
class DES 
{ 
  var $key; 
  var $iv; //偏移量 
   
  function DES( $key, $iv=0 ) { 
  //key长度8例如:1234abcd 
    $this->key = $key; 
    if( $iv == 0 ) { 
      $this->iv = $key; //默认以$key 作为 iv 
    } else { 
      $this->iv = $iv; //mcrypt_create_iv ( mcrypt_get_block_size (MCRYPT_DES, MCRYPT_MODE_CBC), MCRYPT_DEV_RANDOM ); 
    } 
  } 
   
  function encrypt($str) { 
  //加密,返回大写十六进制字符串 
    $size = mcrypt_get_block_size ( MCRYPT_DES, MCRYPT_MODE_CBC ); 
    $str = $this->pkcs5Pad ( $str, $size ); 
    return strtoupper( bin2hex( mcrypt_cbc(MCRYPT_DES, $this->key, $str, MCRYPT_ENCRYPT, $this->iv ) ) ); 
  } 
   
  function decrypt($str) { 
  //解密 
    $strBin = $this->hex2bin( strtolower( $str ) ); 
    $str = mcrypt_cbc( MCRYPT_DES, $this->key, $strBin, MCRYPT_DECRYPT, $this->iv ); 
    $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 ); 
  } 
   
} 
?> 

以上这篇php实现和c#一致的DES加密解密实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# php  # des加密解密  # php DES加密算法实例分析  # PHP实现基于3DES算法加密解密字符串示例  # PHP对称加密算法(DES/AES)类的实现代码  # PHP实现的DES加密解密封装类完整实例  # PHP简单实现DES加密解密的方法  # PHP中加密解密函数与DES加密解密实例  # 兼容PHP和Java的des加密解密代码分享  # 如何通过PHP实现Des加密算法代码实例  # 给大家  # 加密解密  # 偏移量  # 加解密  # 希望能  # 英文  # 希望大家  # 这篇  # 小编  # 大家多多  # 输入密码  # 长度为  # 没法用  # 网上  # pToEncrypt  # DESEnCode  # region  # Server  # HttpContext  # Current 


相关文章: 合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  制作网站的基本流程,设计网站的软件是什么?  如何快速搭建高效服务器建站系统?  如何在阿里云完成域名注册与建站?  c++怎么用jemalloc c++替换默认内存分配器【性能】  建站主机助手选型指南:2025年热门推荐与高效部署技巧  网站好制作吗知乎,网站开发好学吗?有什么技巧?  如何批量查询域名的建站时间记录?  大型企业网站制作流程,做网站需要注册公司吗?  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  如何将凡科建站内容保存为本地文件?  宁波免费建站如何选择可靠模板与平台?  制作农业网站的软件,比较好的农业网站推荐一下?  如何通过山东自助建站平台快速注册域名?  独立制作一个网站多少钱,建立网站需要花多少钱?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  如何在IIS中配置站点IP、端口及主机头?  宝塔面板如何快速创建新站点?  如何用wdcp快速搭建高效网站?  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  如何正确下载安装西数主机建站助手?  学校为何禁止电信移动建设网站?  网站制作服务平台,有什么网站可以发布本地服务信息?  小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建  长沙企业网站制作哪家好,长沙水业集团官方网站?  网站制作话术技巧,网站推广做的好怎么话术?  装修招标网站设计制作流程,装修招标流程?  家具网站制作软件,家具厂怎么跑业务?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  广州建站公司哪家好?十大优质服务商推荐  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  建站之星免费模板:自助建站系统与智能响应式一键生成  建站之星后台密码如何安全设置与找回?  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  如何通过可视化优化提升建站效果?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  开封网站制作公司,网络用语开封是什么意思?  海南网站制作公司有哪些,海口网是哪家的?  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  如何快速打造个性化非模板自助建站?  云南网站制作公司有哪些,云南最好的招聘网站是哪个?  名字制作网站免费,所有小说网站的名字?  移民网站制作流程,怎么看加拿大移民官网?  jQuery 常见小例汇总  如何在Golang中引入测试模块_Golang测试包导入与使用实践  制作网站的模板软件,网站怎么建设?  如何通过免费商城建站系统源码自定义网站主题与功能? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。