900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > php和c#一致的DES加密解密算法类

php和c#一致的DES加密解密算法类

时间:2022-03-17 06:54:21

相关推荐

php和c#一致的DES加密解密算法类

后端开发|php教程

DES,System,using,str,inputByteArray

后端开发-php教程

DES加解密算法,在C#与PHP中的通用类。

书法作品展销网站源码,vscode 多文件调试,ubuntu开机项,tomcat 下载配置,sqlite怎么调外键,slides插件,三大主流前端框架共同点,爬虫如何保存采集数据,php自定义变量,深圳seo优化收费,ftp网站源码,ie8 网页图片滚动慢,yourphp 模板lzw

注意:

分类门店地图导航源码,vscode禁用波浪线,ubuntu 清理磁盘,查看tomcat后台输出,pquery 爬虫,php 指定随机数,seo内容运营工作,光合配送宝网站源码,dz手机模板自带lzw

1、类中的秘钥key跟向量iv,均用的同样的值

源码建站助手,32位vscode输入法,ubuntu非自由,tomcat获取日志信息,爬虫图片案例,php proxy模式,知名seo关键词优化咨询lzw

2、编码均采用的utf-8

以下为具体代码,可以直接复制去进行实际测试

C#版代码:

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; //C# 版DES 加解密算法类public class Des{ //加解密密钥 private static string skey = "12345678";#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); 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 #region DESDeCode DES解密public static string DESDeCode(string pToDecrypt, string sKey){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版代码:

key = $key;$this->iv = $key; //默认以$key 作为 iv}//加密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 ( $text ))return false;if (strspn ( $text, chr ( $pad ), strlen ( $text ) - $pad ) != $pad)return false;return substr ( $text, 0, - 1 * $pad );}}header("Content-type: text/html; charset=utf-8");$key = 12345678;$str = abc.123;$des = new DES($key);$str_en_des = $des->encrypt($str); //加密字符串$str_de_des = $des->decrypt($str_en_des); //解密字符串echo 加密字符串:,$str,

;echo 加密秘钥key:,$key,

;echo 加密后字符串:,$str_en_des,

;echo 解密后字符串:,$str_de_des,

;?>

代码均经过网上搜索进行整理,特别感谢博文:/e421083458/article/details/39373815

以上就介绍了php和c#一致的DES加密解密算法类,包括了方面的内容,希望对PHP教学有兴趣的朋友有所帮助。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。