php+c#如何一致实现DES加密解密的示例代码分享
下面小编就为大家带来一篇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中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

标题:使用ReactQuery和数据库进行数据加密和解密简介:本文将介绍如何使用ReactQuery和数据库进行数据加密和解密。我们将使用ReactQuery作为数据管理库,并结合数据库进行数据的加密和解密操作。通过结合这两个技术,我们可以安全地存储和传输敏感数据,并在需要时进行加密和解密操作,保证数据的安全性。正文:一、ReactQue

这篇文章是本站给大家分享的在不使用第三方加解密工具情况下对文件进行加解密方法,Win11右键菜单添加加密解密方法教程,由于需要修改注册表,大家一定要做好备份再进行操作。1、首先,按键盘上的【Win+R】组合键,打开运行,然后输入【regedit】命令,按【确定或回车】可以打开注册表编辑器;2、用户账户控制窗口,你要允许此应用对你的设备进行更改吗?点击【是】;3、注册表编辑器窗口,依次展开到以下路径:HKEY_CURRENT_USER\Software\Microsoft\Windows\Curr

使用Yii框架中间件加密和解密敏感数据引言:在现代的互联网应用中,隐私和数据安全是非常重要的问题。为了确保用户的敏感数据不被未经授权的访问者获取,我们需要对这些数据进行加密。Yii框架为我们提供了一种简单且有效的方法来实现加密和解密敏感数据的功能。在本文中,我们将介绍如何使用Yii框架的中间件来实现这一目标。Yii框架简介Yii框架是一个高性能的PHP框架,

随着微信小程序在移动应用市场中越来越流行,它的开发也受到越来越多的关注。在小程序中,PHP作为一种常用的后端语言,经常用于处理敏感数据的加密和解密。本文将介绍在微信小程序中如何使用PHP实现加密和解密。一、什么是加密和解密?加密是将敏感数据转换为不可读的形式,以确保数据在传输过程中不被窃取或篡改。解密是将加密数据还原为原始数据。在小程序中,加密和解密通常包括

PHP邮箱开发:实现邮件的加密和解密功能随着信息传递的日益发达,电子邮件已成为人们重要的沟通方式之一。然而,随之而来的安全问题也逐渐引起人们的关注。为了保护邮件的安全性,加密和解密成为了发送和接收邮件的重要环节。本文将介绍如何使用PHP开发邮件加密和解密功能,提高电子邮件的安全性。一、加密的原理和作用邮件加密是将邮件内容使用特定的算法进行转换,使得除了收件

Java函数库提供了丰富的加密解密工具,包括JCE、JCA、ApacheCommonsCrypt等。JCE提供了加密算法和功能,JCA提供接口访问加密服务提供者,ApacheCommonsCrypt包含更多加密算法和工具。实战案例展示了如何使用JCE对文本进行AES加密,生成Base64编码的密文。

如何利用Go的SectionReader模块实现文件指定部分的内容加密与解密?引言:在开发中,文件的内容加密与解密是一个很常见的需求。Go语言提供了丰富的库和模块来满足这一需求。其中,SectionReader是一个非常实用的模块,它可以让我们在一个大文件中指定内容的范围,并进行读取、加密和解密操作。本文将介绍如何使用Go的SectionReader模块来实

PHP腾讯云云服务器API接口对接中的数据加密与解密示例随着云服务器的广泛应用,越来越多的开发者开始将自己的应用部署到云服务器上。而在与腾讯云云服务器API接口对接过程中,数据的加密与解密是一个重要的环节。本文将介绍一种在PHP中进行数据加密与解密的示例。在对接腾讯云云服务器API接口时,我们通常需要对一些敏感数据进行加密,以确保数据的安全。同时,也需要在接
