PHP、C#、通用的DES加密
生活随笔
收集整理的這篇文章主要介紹了
PHP、C#、通用的DES加密
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
PHP
class?JoDES?{private?static?$_instance?=?NULL;/***?@return?JoDES*/public?static?function?share()?{if?(is_null(self::$_instance))?{self::$_instance?=?new?JoDES();}return?self::$_instance;}/***?加密*?@param?string?$str?要處理的字符串*?@param?string?$key?加密Key,為8個字節長度*?@return?string*/public?function?encode($str,?$key)?{$size?=?mcrypt_get_block_size(MCRYPT_DES,?MCRYPT_MODE_CBC);$str?=?$this->pkcs5Pad($str,?$size);$aaa?=?mcrypt_cbc(MCRYPT_DES,?$key,?$str,?MCRYPT_ENCRYPT,?$key);$ret?=?base64_encode($aaa);return?$ret;}/***?解密*?@param?string?$str?要處理的字符串*?@param?string?$key?解密Key,為8個字節長度*?@return?string*/public?function?decode($str,?$key)?{$strBin?=?base64_decode($str);$str?=?mcrypt_cbc(MCRYPT_DES,?$key,?$strBin,?MCRYPT_DECRYPT,?$key);$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);}}C#?
public?class?MyDes{///?<summary>///?DES加密方法///?</summary>///?<param?name="strPlain">明文</param>///?<param?name="strDESKey">密鑰</param>///?<param?name="strDESIV">向量</param>///?<returns>密文</returns>public?static?string?Encode(string?source,?string?_DESKey){StringBuilder?sb?=?new?StringBuilder();using?(DESCryptoServiceProvider?des?=?new?DESCryptoServiceProvider()){byte[]?key?=?ASCIIEncoding.ASCII.GetBytes(_DESKey);byte[]?iv?=?ASCIIEncoding.ASCII.GetBytes(_DESKey);byte[]?dataByteArray?=?Encoding.UTF8.GetBytes(source);des.Mode?=?System.Security.Cryptography.CipherMode.CBC;des.Key?=?key;des.IV?=?iv;string?encrypt?=?"";using?(MemoryStream?ms?=?new?MemoryStream())using?(CryptoStream?cs?=?new?CryptoStream(ms,?des.CreateEncryptor(),?CryptoStreamMode.Write)){cs.Write(dataByteArray,?0,?dataByteArray.Length);cs.FlushFinalBlock();encrypt?=?Convert.ToBase64String(ms.ToArray());}return?encrypt;}}///?<summary>///?進行DES解密。///?</summary>///?<param?name="pToDecrypt">要解密的base64串</param>///?<param?name="sKey">密鑰,且必須為8位。</param>///?<returns>已解密的字符串。</returns>public?static?string?Decode(string?source,?string?sKey){byte[]?inputByteArray?=?System.Convert.FromBase64String(source);//Encoding.UTF8.GetBytes(source);using?(DESCryptoServiceProvider?des?=?new?DESCryptoServiceProvider()){des.Key?=?ASCIIEncoding.ASCII.GetBytes(sKey);des.IV?=?ASCIIEncoding.ASCII.GetBytes(sKey);System.IO.MemoryStream?ms?=?new?System.IO.MemoryStream();using?(CryptoStream?cs?=?new?CryptoStream(ms,?des.CreateDecryptor(),?CryptoStreamMode.Write)){cs.Write(inputByteArray,?0,?inputByteArray.Length);cs.FlushFinalBlock();cs.Close();}string?str?=?Encoding.UTF8.GetString(ms.ToArray());ms.Close();return?str;}}}轉載于:https://my.oschina.net/7478729/blog/549172
總結
以上是生活随笔為你收集整理的PHP、C#、通用的DES加密的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于FPGA的FFT设计
- 下一篇: C#开发微信公众平台-就这么简单(附De