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脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

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

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

標題:使用ReactQuery和資料庫進行資料加密和解密簡介:本文將介紹如何使用ReactQuery和資料庫進行資料加密和解密。我們將使用ReactQuery作為資料管理庫,並結合資料庫進行資料的加密和解密操作。透過結合這兩種技術,我們可以安全地儲存和傳輸敏感數據,並在需要時進行加密和解密操作,確保資料的安全性。正文:一、ReactQue

隨著微信小程式在行動應用市場中越來越流行,它的開發也受到越來越多的關注。在小程式中,PHP作為一種常用的後端語言,經常用於處理敏感資料的加密和解密。本文將介紹在微信小程式中如何使用PHP實作加密和解密。一、什麼是加密解密?加密是將敏感資料轉換為不可讀的形式,以確保資料在傳輸過程中不會被竊取或竄改。解密是將加密資料還原為原始資料。在小程式中,加密和解密通常包括

使用Yii框架中間件加密和解密敏感資料引言:在現代的網路應用中,隱私和資料安全是非常重要的問題。為了確保用戶的敏感資料不會被未經授權的訪客取得,我們需要對這些資料進行加密。 Yii框架為我們提供了一種簡單且有效的方法來實現加密和解密敏感資料的功能。在本文中,我們將介紹如何使用Yii框架的中間件來實現這一目標。 Yii框架簡介Yii框架是一個高效能的PHP框架,

這篇文章是本站跟大家分享的在不使用第三方加解密工具情況下對文件進行加解密方法,Win11右鍵選單添加加密解密方法教程,由於需要修改註冊表,大家一定要做好備份再進行操作。 1.首先,按鍵盤上的【Win+R】組合鍵,打開運行,然後輸入【regedit】命令,按【確定或回車】可以打開註冊表編輯器;2、用戶帳戶控制窗口,你要允許此應用程式對你的裝置進行更改嗎?點選【是】;3、登錄編輯器窗口,依序展開到以下路徑:HKEY_CURRENT_USER\Software\Microsoft\Windows\Curr

PHP騰訊雲端伺服器API介面對接過程中的資料加密與解密範例簡介:在與騰訊雲端雲端伺服器的API介面對接過程中,資料的安全性是非常重要的。為了保障資料在傳輸和儲存中的安全,我們需要對敏感資訊進行加密處理。本文將介紹如何使用PHP對資料進行加密和解密操作,以提高資料的保密性和完整性。資料加密:在進行API請求時,我們需要將敏感資訊加密,以確保資料的安全。常用的

PHP郵箱開發:實現郵件的加密和解密功能隨著訊息傳遞的日益發達,電子郵件已成為人們重要的溝通方式之一。然而,隨之而來的安全問題也逐漸引起人們的注意。為了保護郵件的安全性,加密和解密成為了發送和接收郵件的重要環節。本文將介紹如何使用PHP開發郵件加密與解密功能,以提升電子郵件的安全性。一、加密的原理和作用郵件加密是將郵件內容使用特定的演算法轉換,使得除了收件

Java函式庫提供了豐富的加密解密工具,包括JCE、JCA、ApacheCommonsCrypt等。 JCE提供了加密演算法和功能,JCA提供介面存取加密服務提供者,ApacheCommonsCrypt包含更多加密演算法和工具。實戰案例展示如何使用JCE對文字進行AES加密,產生Base64編碼的密文。

如何利用Go的SectionReader模組實作檔案指定部分的內容加密與解密?引言:在開發中,文件的內容加密與解密是一個很常見的需求。 Go語言提供了豐富的函式庫和模組來滿足這一需求。其中,SectionReader是一個非常實用的模組,它可以讓我們在一個大檔案中指定內容的範圍,並進行讀取、加密和解密操作。本文將介紹如何使用Go的SectionReader模組來實
