前言:
DES是一种加密方法,向服务器发送数据时,希望对数据进行简单的加密,并且在服务器上自行解密的教程。
步骤:
unity3D(C#)
//对数据进行DES加密
public static String Encrypt(String str)
{
string Key = "98344334";//自行设置,随便8个数字(字母应该也行),作为加密解密的
密匙
byte[] bStr = Encoding.UTF8.GetBytes(str);
try
{
DESCryptoServiceProvider desc = new
DESCryptoServiceProvider();
desc.Key = ASCIIEncoding.ASCII.GetBytes(Key);
desc.IV = ASCIIEncoding.ASCII.GetBytes(Key);
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream,
desc.CreateEncryptor(), CryptoStreamMode.Write);
cStream.Write(bStr, 0, bStr.Length);
cStream.FlushFinalBlock();
StringBuilder ret = new StringBuilder();
foreach (byte b in mStream.ToArray())
{
ret.AppendFormat("{0:X2}", b);
}
ret.ToString();
return ret.ToString();
}
catch
{
return string.Empty;
}
}
以上函数,传进来一个要加密的数据,return出加过密的数据,要加的头文件大家自行添加。。。
服务器端(PHP)
class DES
{
var $key =
'98344334'; //和上面的KEY要相同
var $iv =
'98344334'; //和上面的KEY相同
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里加入上面的类,
$des = new DES();//创建一个变量
$password =
$des->decrypt($password);//调用函数即可获得解密后的数据。
以上的代码直接可复制使用,只需修改key的值。