C# DESCryptoServiceProvider php 2011年07月27日 星期三 11:35

using System;

using System.Text;

using System.Collections;

using System.IO;

using System.Security.Cryptography; namespace ConsoleApplication1     class Program         static string skey = "12345678";

static string str = "gg";

static string enstr = "D084F252A84AB151";         static void Main(string[] args)             Console.WriteLine(Decrypt(enstr, skey));//解密

Console.WriteLine(Encrypt(str,skey));//加密

}         public static string Encrypt(string pToEncrypt, string sKey)             DESCryptoServiceProvider des = new DESCryptoServiceProvider();

//把字符串放到byte数组中

//原来使用的UTF8编码,我改成Unicode编码了,不行

byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);

//byte[] inputByteArray=Encoding.Unicode.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);

//Write the byte array into the crypto stream

//(It will end up in the memory stream)

cs.Write(inputByteArray, 0, inputByteArray.Length);

cs.FlushFinalBlock();

//Get the data back from the memory stream, and into a string

StringBuilder ret = new StringBuilder();

foreach (byte b in ms.ToArray())                 //Format as hex

ret.AppendFormat("{0:X2}", b);             ret.ToString();

return ret.ToString();

}         public static string Decrypt(string pToDecrypt, string sKey)             DESCryptoServiceProvider des = new DESCryptoServiceProvider();             //Put the input string into the byte array

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);

//Flush the data through the crypto stream into the memory stream

cs.Write(inputByteArray, 0, inputByteArray.Length);

cs.FlushFinalBlock();             //Get the decrypted data back from the memory stream

//建立StringBuild对象,CreateDecrypt使用的是流对象,必须把解密后的文本变成流对象

StringBuilder ret = new StringBuilder();             return System.Text.Encoding.Default.GetString(ms.ToArray());     } ///

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 );     $key = '12345678';

$crypt = new DES($key); $str = 'gg'; $p = $crypt->encrypt($str); echo "
";

echo $p; $p = $crypt->decrypt($p); echo "
";

echo $p;

?>

更多交流到提问网(shenzhidao.com)一起交流网络新技术。

php asp.net des,转DES的dotNet到php实现相关推荐

  1. des加密算法(des加密算法的密文分组长度)

    简述des的加密运算法则 微软.NET Framework安全性概述本文提供了Microsoft .NET Framework的安全结构,包括基于证据的安全性的概述,基于安全,认证和授权的角色,以及独 ...

  2. c语言des算法实验报告,c语言实现des算法des加密算法实验报告

    c语言实现des算法des加密算法实验报告 (23页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 xx 工程大学工程大学实验报告实验报告 ...

  3. 【安全算法之DES】DES算法(支持ECB/CBC模式)的C语言源码实现

    [安全算法之DES]DES算法(支持ECB/CBC模式)的C语言源码实现 概述 头文件定义 C语言版本的实现源码 数据分组模式:ECB模式和CBC模式 测试用例 github仓库 更多参考链接 概述 ...

  4. ASP.NET加密算法(MD5/DES)

    本文讲 ASP.NET的MD5和DES加密和解密算法 #region MD5算法         public string md5(string str, int code)         {   ...

  5. ASP.NET Core Linux下为 dotnet 创建守护进程(必备知识)

    前言 在上篇文章中<ASP.NET Core Docker部署>中介绍了如何在 Docker 容器中部署我们的 asp.net core 应用程序,本篇主要是怎么样为我们在 Linux 或 ...

  6. java des ecb_java DES ECB模式对称加密解密

    最近需要又要使用DES加密数据,要求DES加密出来的数据为对称加密,经过研究,发现了一些问题: 1.DES对称ECB模式加密的数据,长度必须为8的倍数 2.加密的数据,加密后先转码(因为加密后的数据我 ...

  7. des算法(des算法密钥是多少位)

    DES密码算法需要哪些要求? ☆提供高质量的数据保护,防止数据未经授权的泄露和未被察觉的修改: ☆具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又要便于理解和掌握: ☆DES密码体制的安全 ...

  8. java des zero_android----Java DES加密算法工具类

    public classBase64DES {private static final char[] legalChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcd ...

  9. C语言实现DES,3DES以及基于3DES的文件加密系统

    C语言实现3DES文件加密系统 DES算法 密钥操作 明文操作 3DES算法 C语言代码实现 代码效果展示 DES算法 DES(数据加密标准)是一种分组密码.明文,密文和密钥的分组长度都是64位. D ...

最新文章

  1. Java编译分类:前端编译和后端编译
  2. 1.0 基础、标示符、常量、数据类型(enum 枚举,struct 结构体)、操作符、循环、数组...
  3. 2021-02-28 Matlab绘制短时傅里叶变换的频谱图和时间-频率-幅值三维图
  4. poj 2299 (归并排序)
  5. 微波工程基础_哈工大电子与信息工程—复试考试大纲
  6. 看见的力量 – (II) 影响地图
  7. 用mysql计算年龄lt;gt;,什么是运算符lt; =gt;在MySQL中?
  8. python 谷歌翻译 api_调用谷歌翻译API
  9. 如何录制电脑系统声音(Audacity)
  10. word如何插入目录
  11. Android人脸识别活体检测开发入门--基于虹软免费SDK实现
  12. java-->if顺序结构-->骰子游戏(小案例)
  13. 怎样把c语言软件卸载干净,怎么把一个软件卸载干净_小编教你彻底卸载软件的方法-系统城...
  14. 文明与征服北条时宗最强阵容搭配指南
  15. Windows XP \Windows 2003启动过程的学习及故障分析处理(六D)
  16. Thompson sampling
  17. php 自动抢红包机制,用脚本实现自动抢红包
  18. 如何快速打通CRM系统和ERP系统,实现业务流程自动化流转
  19. 最后1天|宏基因组分析第8期(报名直播课免费参加线下2020.7)
  20. wifi 的几种加密方式

热门文章

  1. No authorization to log on as a Trusted System
  2. Java嵌套构造函数造成的stack overflow异常
  3. UI debug mode
  4. SAP UI5 Resource bundle getText的实现逻辑
  5. sap.ui.require in SAP UI5 and require in nodejs
  6. html app从上向下弹框,移动端从底部向上过渡弹出弹框
  7. unity 3d物体描边效果_从零开始的卡通渲染描边篇
  8. 剑指offer刷题(java)|二维数组中的查找|替换空格|leetcode刷题
  9. windows 命令行远程连接_CentOS系列001:windows远程桌面连接CentOS
  10. 系统无法在消息文件中为application_iOS 14 Filza 文件消息,M1 能用 win 系统