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;}}}