Heim Backend-Entwicklung PHP-Tutorial Beispielcode-Sharing zur konsistenten Implementierung der DES-Verschlüsselung und -Entschlüsselung in PHP+C#

Beispielcode-Sharing zur konsistenten Implementierung der DES-Verschlüsselung und -Entschlüsselung in PHP+C#

Jul 24, 2017 pm 02:42 PM
加密解密

Der folgende Editor zeigt Ihnen ein Beispiel für DES-Verschlüsselung und -Entschlüsselung in PHP, das mit C# konsistent ist. Der Herausgeber findet es ziemlich gut, deshalb werde ich es jetzt mit Ihnen teilen und es allen als Referenz geben. Folgen wir dem Editor und werfen wir einen Blick darauf.

PHP implementiert DES-Verschlüsselung und -Entschlüsselung im Einklang mit C#. Sie können viele davon im Internet durchsuchen, aber nach dem Testen stellen Sie fest, dass sie alle unbrauchbar sind. Der folgende korrekte Code wurde von mir nach viel harter Arbeit gefunden. Ich hoffe, Sie können es während der Systemintegration verwenden.

Hinweis: Die Länge des Schlüssels beträgt maximal 8 Zeichen.

//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  
}
Nach dem Login kopieren

<?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 ); 
  } 
   
} 
?>
Nach dem Login kopieren


Das obige ist der detaillierte Inhalt vonBeispielcode-Sharing zur konsistenten Implementierung der DES-Verschlüsselung und -Entschlüsselung in PHP+C#. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Datenverschlüsselung und -entschlüsselung mithilfe von React Query und Datenbank Datenverschlüsselung und -entschlüsselung mithilfe von React Query und Datenbank Sep 26, 2023 pm 12:53 PM

Titel: Datenverschlüsselung und -entschlüsselung mit ReactQuery und Datenbank Einführung: In diesem Artikel wird erläutert, wie Sie ReactQuery und Datenbank für die Datenverschlüsselung und -entschlüsselung verwenden. Wir werden ReactQuery als Datenverwaltungsbibliothek verwenden und es mit der Datenbank kombinieren, um Datenverschlüsselungs- und -entschlüsselungsvorgänge durchzuführen. Durch die Kombination dieser beiden Technologien können wir sensible Daten sicher speichern und übertragen und bei Bedarf Verschlüsselungs- und Entschlüsselungsvorgänge durchführen, um die Datensicherheit zu gewährleisten. Text: 1. ReactQue

Verschlüsseln und entschlüsseln Sie sensible Daten mithilfe der Yii-Framework-Middleware Verschlüsseln und entschlüsseln Sie sensible Daten mithilfe der Yii-Framework-Middleware Jul 28, 2023 pm 07:12 PM

Verschlüsseln und Entschlüsseln sensibler Daten mithilfe der Yii-Framework-Middleware Einführung: In modernen Internetanwendungen sind Datenschutz und Datensicherheit sehr wichtige Themen. Um sicherzustellen, dass die sensiblen Daten der Benutzer nicht für unbefugte Besucher zugänglich sind, müssen wir diese Daten verschlüsseln. Das Yii-Framework bietet uns eine einfache und effektive Möglichkeit, die Funktionen zum Verschlüsseln und Entschlüsseln sensibler Daten zu implementieren. In diesem Artikel erfahren Sie, wie Sie dies mithilfe der Middleware des Yii-Frameworks erreichen. Einführung in das Yii-Framework Das Yii-Framework ist ein leistungsstarkes PHP-Framework.

Wie füge ich die Win11-Verschlüsselungsfunktion zum Rechtsklick-Menü hinzu? Wie füge ich eine Win11-Verschlüsselungs- und Entschlüsselungsverknüpfung hinzu? Wie füge ich die Win11-Verschlüsselungsfunktion zum Rechtsklick-Menü hinzu? Wie füge ich eine Win11-Verschlüsselungs- und Entschlüsselungsverknüpfung hinzu? Jan 07, 2024 am 08:45 AM

Dieser Artikel ist ein Tutorial zum Verschlüsseln und Entschlüsseln von Dateien ohne die Verwendung von Verschlüsselungs- und Entschlüsselungstools von Drittanbietern. Ein Tutorial zum Hinzufügen von Verschlüsselungs- und Entschlüsselungsmethoden zum Rechtsklick-Menü von Win11 Erstellen Sie ein Backup, bevor Sie fortfahren. 1. Drücken Sie zunächst die Tastenkombination [Win+R] auf der Tastatur, um Ausführen zu öffnen, geben Sie dann den Befehl [regedit] ein und drücken Sie [OK oder Enter], um den Registrierungseditor zu öffnen muss zugelassen werden Nimmt diese App Änderungen an Ihrem Gerät vor? Klicken Sie auf [Ja]; 3. Erweitern Sie das Fenster des Registrierungseditors auf den folgenden Pfad: HKEY_CURRENT_USER\Software\Microsoft\Windows\Curr

In PHP im WeChat-Applet entwickelte Verschlüsselungs- und Entschlüsselungsimplementierungsmethode In PHP im WeChat-Applet entwickelte Verschlüsselungs- und Entschlüsselungsimplementierungsmethode Jun 01, 2023 am 08:12 AM

Da WeChat-Miniprogramme auf dem Markt für mobile Anwendungen immer beliebter werden, erhält auch ihre Entwicklung immer mehr Aufmerksamkeit. In kleinen Programmen wird häufig PHP als häufig verwendete Backend-Sprache verwendet, um die Ver- und Entschlüsselung sensibler Daten zu übernehmen. In diesem Artikel wird erläutert, wie Sie mit PHP die Verschlüsselung und Entschlüsselung im WeChat-Applet implementieren. 1. Was sind Verschlüsselung und Entschlüsselung? Unter Verschlüsselung versteht man die Umwandlung sensibler Daten in eine unlesbare Form, um sicherzustellen, dass die Daten während der Übertragung nicht gestohlen oder manipuliert werden. Unter Entschlüsselung versteht man die Wiederherstellung verschlüsselter Daten in Originaldaten. In kleinen Programmen umfassen die Verschlüsselung und Entschlüsselung normalerweise

PHP-Postfachentwicklung: Implementierung von E-Mail-Verschlüsselungs- und Entschlüsselungsfunktionen PHP-Postfachentwicklung: Implementierung von E-Mail-Verschlüsselungs- und Entschlüsselungsfunktionen Sep 12, 2023 am 10:40 AM

PHP-Postfachentwicklung: E-Mail-Verschlüsselungs- und Entschlüsselungsfunktionen realisieren Mit der zunehmenden Entwicklung der Informationsübertragung ist E-Mail zu einer der wichtigsten Kommunikationsmethoden für Menschen geworden. Die daraus resultierenden Sicherheitsprobleme haben jedoch nach und nach die Aufmerksamkeit der Menschen auf sich gezogen. Um die Sicherheit von E-Mails zu gewährleisten, sind Verschlüsselung und Entschlüsselung zu wichtigen Aspekten beim Senden und Empfangen von E-Mails geworden. In diesem Artikel wird erläutert, wie Sie mithilfe von PHP E-Mail-Verschlüsselungs- und -Entschlüsselungsfunktionen entwickeln, um die E-Mail-Sicherheit zu verbessern. 1. Prinzip und Funktion der Verschlüsselung Die E-Mail-Verschlüsselung besteht darin, den E-Mail-Inhalt mithilfe eines bestimmten Algorithmus so umzuwandeln, dass er zusätzlich zum Empfänger gelangt

Welche Verschlüsselungs- und Entschlüsselungstools werden in Java-Funktionsbibliotheken häufig verwendet? Welche Verschlüsselungs- und Entschlüsselungstools werden in Java-Funktionsbibliotheken häufig verwendet? May 05, 2024 am 08:54 AM

Die Java-Funktionsbibliothek bietet eine Fülle von Verschlüsselungs- und Entschlüsselungstools, darunter JCE, JCA, Apache CommonsCrypt usw. JCE stellt Verschlüsselungsalgorithmen und -funktionen bereit, JCA stellt Schnittstellen für den Zugriff auf Verschlüsselungsdienstanbieter bereit und Apache CommonsCrypt enthält weitere Verschlüsselungsalgorithmen und -tools. Der praktische Fall zeigt, wie man mit JCE Text mit AES verschlüsselt und Base64-codierten Chiffretext generiert.

Wie verwende ich das SectionReader-Modul von Go, um den Inhalt eines bestimmten Teils einer Datei zu ver- und entschlüsseln? Wie verwende ich das SectionReader-Modul von Go, um den Inhalt eines bestimmten Teils einer Datei zu ver- und entschlüsseln? Jul 23, 2023 am 08:24 AM

Wie verwende ich das SectionReader-Modul von Go, um den Inhalt eines bestimmten Teils einer Datei zu ver- und entschlüsseln? Einführung: In der Entwicklung ist die Verschlüsselung und Entschlüsselung von Dateiinhalten eine sehr häufige Anforderung. Die Go-Sprache bietet eine Fülle von Bibliotheken und Modulen, um diesen Bedarf zu decken. Unter diesen ist SectionReader ein sehr praktisches Modul, mit dem wir den Inhaltsbereich einer großen Datei angeben und Lese-, Verschlüsselungs- und Entschlüsselungsvorgänge durchführen können. In diesem Artikel wird erläutert, wie Sie das SectionReader-Modul von Go zur Implementierung verwenden

Beispiel für die Datenverschlüsselung und -entschlüsselung beim Andocken der PHP-Tencent-Cloud-Server-API-Schnittstelle Beispiel für die Datenverschlüsselung und -entschlüsselung beim Andocken der PHP-Tencent-Cloud-Server-API-Schnittstelle Jul 05, 2023 pm 06:16 PM

Beispiele für die Datenverschlüsselung und -entschlüsselung beim Andocken der Tencent Cloud Server-API-Schnittstelle in PHP Mit der weit verbreiteten Anwendung von Cloud-Servern haben immer mehr Entwickler damit begonnen, ihre Anwendungen auf Cloud-Servern bereitzustellen. Bei der Verbindung mit der Tencent Cloud-Server-API-Schnittstelle ist die Datenverschlüsselung und -entschlüsselung eine wichtige Verbindung. In diesem Artikel wird ein Beispiel für die Datenverschlüsselung und -entschlüsselung in PHP vorgestellt. Bei der Verbindung mit der API-Schnittstelle des Tencent Cloud-Servers müssen wir normalerweise einige vertrauliche Daten verschlüsseln, um die Datensicherheit zu gewährleisten. Gleichzeitig ist es auch notwendig, abzuholen

See all articles