PHP는 C#과 일치하는 DES 암호화 및 암호 해독 방법을 구현합니다.
이 글은 주로 C#과 일치하는 PHP에서 DES 암호화 및 복호화를 구현하는 방법을 소개합니다. 관심 있는 친구들이 참고하면 도움이 될 것입니다.
참고: 키 길이는 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의 RSA암호화 및 복호화및 개발 인터페이스 사례 사용 분석
PHP RSA ciphertext암호화 해독 비밀 단계에 대한 자세한 설명
을 구현합니다.
위 내용은 PHP는 C#과 일치하는 DES 암호화 및 암호 해독 방법을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











오늘날 인공지능(AI) 기술 개발은 본격화되고 있으며, 다양한 분야에서 큰 잠재력과 영향력을 보여주고 있습니다. 오늘 Dayao는 여러분에게 몇 가지 참고 자료를 제공하고자 4개의 .NET 오픈 소스 AI 모델 LLM 관련 프로젝트 프레임워크를 공유할 것입니다. https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel은 OpenAI, Azure와 같은 대규모 언어 모델(LLM)을 통합하도록 설계된 오픈 소스 소프트웨어 개발 키트(SDK)입니다.

제목: ReactQuery와 데이터베이스를 이용한 데이터 암호화 및 복호화 소개: 이 글에서는 데이터 암호화 및 복호화를 위해 ReactQuery와 데이터베이스를 활용하는 방법을 소개합니다. ReactQuery를 데이터 관리 라이브러리로 사용하고 이를 데이터베이스와 결합하여 데이터 암호화 및 암호 해독 작업을 수행합니다. 이 두 가지 기술을 결합함으로써 민감한 데이터를 안전하게 저장 및 전송할 수 있으며 필요할 때 암호화 및 암호 해독 작업을 수행하여 데이터 보안을 보장할 수 있습니다. 텍스트: 1. ReactQue

위챗 미니 프로그램이 모바일 애플리케이션 시장에서 인기를 끌면서 위챗의 개발도 점점 더 주목을 받고 있다. 소규모 프로그램에서는 일반적으로 사용되는 백엔드 언어인 PHP를 사용하여 민감한 데이터의 암호화 및 암호 해독을 처리하는 경우가 많습니다. 이 기사에서는 PHP를 사용하여 WeChat 애플릿에서 암호화 및 암호 해독을 구현하는 방법을 소개합니다. 1. 암호화와 복호화란 무엇인가요? 암호화는 전송 중에 데이터가 도난당하거나 변조되지 않도록 하기 위해 민감한 데이터를 읽을 수 없는 형식으로 변환하는 것입니다. 복호화는 암호화된 데이터를 원본 데이터로 복원하는 것입니다. 소규모 프로그램에서 암호화 및 암호 해독에는 일반적으로 다음이 포함됩니다.

Yii 프레임워크 미들웨어를 사용하여 민감한 데이터 암호화 및 해독 소개: 최신 인터넷 애플리케이션에서 개인 정보 보호 및 데이터 보안은 매우 중요한 문제입니다. 승인되지 않은 방문자가 사용자의 민감한 데이터에 접근할 수 없도록 하려면 이 데이터를 암호화해야 합니다. Yii 프레임워크는 민감한 데이터를 암호화하고 해독하는 기능을 구현하는 간단하고 효과적인 방법을 제공합니다. 이 글에서는 Yii 프레임워크의 미들웨어를 사용하여 이를 달성하는 방법을 다룰 것입니다. Yii 프레임워크 소개 Yii 프레임워크는 고성능 PHP 프레임워크입니다.

이 글은 타사 암호화 및 복호화 도구를 사용하지 않고 파일을 암호화하고 복호화하는 방법에 대한 튜토리얼입니다. Win11의 오른쪽 클릭 메뉴에 암호화 및 복호화 방법을 추가하는 방법에 대한 튜토리얼입니다. 계속하기 전에 백업하십시오. 1. 먼저 키보드에서 [Win+R] 키 조합을 눌러 실행을 연 다음, [regedit] 명령을 입력하고 [확인 또는 Enter]를 눌러 레지스트리 편집기를 엽니다. 2. 사용자 계정 컨트롤 창에서 허용해야 합니다. 이 앱이 기기를 변경합니까? [예]를 클릭합니다. 3. 레지스트리 편집기 창에서 다음 경로로 확장합니다: HKEY_CURRENT_USER\Software\Microsoft\Windows\Curr

.NET 개발자라면 고품질 소프트웨어 제공에 있어 기능과 성능 최적화의 중요성을 인식해야 합니다. 제공된 리소스를 전문적으로 활용하고 웹 사이트 로드 시간을 줄임으로써 사용자에게 즐거운 경험을 선사할 뿐만 아니라 인프라 비용도 절감할 수 있습니다.

높은 동시성 요청 처리 측면에서 .NETASP.NETCoreWebAPI는 JavaSpringMVC보다 성능이 뛰어납니다. 그 이유는 다음과 같습니다. 시작 시간을 줄여주는 AOT 조기 컴파일, 개발자가 개체 메모리 할당 및 해제를 담당하는 경우.
