php asp.net des,转DES的dotNet到php实现
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实现相关推荐
- des加密算法(des加密算法的密文分组长度)
简述des的加密运算法则 微软.NET Framework安全性概述本文提供了Microsoft .NET Framework的安全结构,包括基于证据的安全性的概述,基于安全,认证和授权的角色,以及独 ...
- c语言des算法实验报告,c语言实现des算法des加密算法实验报告
c语言实现des算法des加密算法实验报告 (23页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 xx 工程大学工程大学实验报告实验报告 ...
- 【安全算法之DES】DES算法(支持ECB/CBC模式)的C语言源码实现
[安全算法之DES]DES算法(支持ECB/CBC模式)的C语言源码实现 概述 头文件定义 C语言版本的实现源码 数据分组模式:ECB模式和CBC模式 测试用例 github仓库 更多参考链接 概述 ...
- ASP.NET加密算法(MD5/DES)
本文讲 ASP.NET的MD5和DES加密和解密算法 #region MD5算法 public string md5(string str, int code) { ...
- ASP.NET Core Linux下为 dotnet 创建守护进程(必备知识)
前言 在上篇文章中<ASP.NET Core Docker部署>中介绍了如何在 Docker 容器中部署我们的 asp.net core 应用程序,本篇主要是怎么样为我们在 Linux 或 ...
- java des ecb_java DES ECB模式对称加密解密
最近需要又要使用DES加密数据,要求DES加密出来的数据为对称加密,经过研究,发现了一些问题: 1.DES对称ECB模式加密的数据,长度必须为8的倍数 2.加密的数据,加密后先转码(因为加密后的数据我 ...
- des算法(des算法密钥是多少位)
DES密码算法需要哪些要求? ☆提供高质量的数据保护,防止数据未经授权的泄露和未被察觉的修改: ☆具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又要便于理解和掌握: ☆DES密码体制的安全 ...
- java des zero_android----Java DES加密算法工具类
public classBase64DES {private static final char[] legalChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcd ...
- C语言实现DES,3DES以及基于3DES的文件加密系统
C语言实现3DES文件加密系统 DES算法 密钥操作 明文操作 3DES算法 C语言代码实现 代码效果展示 DES算法 DES(数据加密标准)是一种分组密码.明文,密文和密钥的分组长度都是64位. D ...
最新文章
- Java编译分类:前端编译和后端编译
- 1.0 基础、标示符、常量、数据类型(enum 枚举,struct 结构体)、操作符、循环、数组...
- 2021-02-28 Matlab绘制短时傅里叶变换的频谱图和时间-频率-幅值三维图
- poj 2299 (归并排序)
- 微波工程基础_哈工大电子与信息工程—复试考试大纲
- 看见的力量 – (II) 影响地图
- 用mysql计算年龄lt;gt;,什么是运算符lt; =gt;在MySQL中?
- python 谷歌翻译 api_调用谷歌翻译API
- 如何录制电脑系统声音(Audacity)
- word如何插入目录
- Android人脸识别活体检测开发入门--基于虹软免费SDK实现
- java-->if顺序结构-->骰子游戏(小案例)
- 怎样把c语言软件卸载干净,怎么把一个软件卸载干净_小编教你彻底卸载软件的方法-系统城...
- 文明与征服北条时宗最强阵容搭配指南
- Windows XP \Windows 2003启动过程的学习及故障分析处理(六D)
- Thompson sampling
- php 自动抢红包机制,用脚本实现自动抢红包
- 如何快速打通CRM系统和ERP系统,实现业务流程自动化流转
- 最后1天|宏基因组分析第8期(报名直播课免费参加线下2020.7)
- wifi 的几种加密方式
热门文章
- No authorization to log on as a Trusted System
- Java嵌套构造函数造成的stack overflow异常
- UI debug mode
- SAP UI5 Resource bundle getText的实现逻辑
- sap.ui.require in SAP UI5 and require in nodejs
- html app从上向下弹框,移动端从底部向上过渡弹出弹框
- unity 3d物体描边效果_从零开始的卡通渲染描边篇
- 剑指offer刷题(java)|二维数组中的查找|替换空格|leetcode刷题
- windows 命令行远程连接_CentOS系列001:windows远程桌面连接CentOS
- 系统无法在消息文件中为application_iOS 14 Filza 文件消息,M1 能用 win 系统