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($text))
return false;
if (strspn($text, chr($pad), strlen($text) - $pad) != $pad)
return false;
return substr($text, 0, - 1 * $pad);
}
}
c#
public class mydes
{
///
/// des加密方法
///
/// 明文
/// 密钥
/// 向量
/// 密文
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;
}
}
///
/// 进行des解密。
///
/// 要解密的base64串
/// 密钥,且必须为8位。
/// 已解密的字符串。
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;
}
}
}