学习中...

C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace LiveMGT
{public partial class Main : Form{private readonly string AppID = "703093033";private readonly string AppKey = "e2470a332d21d641298136c2754331aa";private readonly HttpHelper HTTP;public Main(){InitializeComponent();string PuKey = File.ReadAllText(@".\Config\PuKey.xml");INIHelper INIFile = new INIHelper();string Url = INIFile.Read("Server", "Url", "Null", @".\Config\Client.ini");HTTP = new HttpHelper(AppID, AppKey, PuKey, Url);}private void button5_Click(object sender, EventArgs e){HTTP.POST(textBox1.Text,out string reStr,out string errStr);textBox2.Text = errStr;textBox3.Text = reStr;}private void Main_Load(object sender, EventArgs e){}}
}
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using zlib;namespace LiveMGT
{class HttpHelper{private readonly string AppID;private readonly string AppKey;private readonly string PuKey;private readonly string Url;private string PHPSESSID;#region 初始化/// <summary>/// 初始化/// </summary>public HttpHelper(string _AppID, string _AppKey, string _PuKey, string _Url){AppID = _AppID;AppKey = _AppKey;PuKey = _PuKey;Url = _Url;PHPSESSID = "";}#endregion#region HTTP POST/// <summary>/// HTTP POST/// </summary>/// <param name="dataStr">需要提交的字符串</param>/// <param name="resultStr">提交后网页返回的JSON字符串</param>/// <param name="errStr">如果提交失败返回错误内容</param>/// <returns>成功返回true,失败返回false</returns>public bool POST(string dataStr,out string resultStr,out string errStr) {resultStr = "";errStr = "";if (dataStr == string.Empty || dataStr == "") {errStr = "request_data_err";return false;}try{string NumRan = RanNum();                                       //请求随机string TimeRnd = GetTimeStamp(true);                            //请求时间string KeyRnd = MD5(AppID + TimeRnd + NumRan + AppKey);         //请求密钥KeyRnd = HmacMD5(KeyRnd, AppKey);                               //请求密钥string RSARnd = RSAENC(PuKey, KeyRnd);                          //公钥加密RSARnd = StrToHex(RSARnd);                                      //公钥加密if (RSARnd == ""){errStr = "request_rsa_err";return false;}//-----------------------------------------------------------------------------int dataLen = dataStr.Length;                                   //数据长度dataStr = Compress(dataStr);                                    //数据压缩string postStr = RC4ENC(dataStr, KeyRnd);                       //加密数据byte[] sendData = Encoding.UTF8.GetBytes(postStr);              //发送数据             string cookieStr = PHPSESSID + ";appid=" + AppID + ";time=" + TimeRnd + ";rand=" + NumRan + ";length=" + dataLen + ";key=" + RSARnd;//----------------------------------------------------------------------------- HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);request.Method = "POST";request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36";request.Timeout = 10000;request.KeepAlive = false;request.Headers.Add("Cookie", cookieStr);request.ContentLength = sendData.Length;Stream newStream = request.GetRequestStream();newStream.Write(sendData, 0, sendData.Length);newStream.Close();HttpWebResponse myResponse = (HttpWebResponse)request.GetResponse();StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);string content = reader.ReadToEnd();reader.Close();reader.Dispose();cookieStr = myResponse.Headers.Get("Set-Cookie");resultStr = content;//不管是否成功都返回//-----------------------------------------------------------------------------  if (PHPSESSID == ""){PHPSESSID = MidStrEx(cookieStr, "PHPSESSID=", ";");if (PHPSESSID == string.Empty || PHPSESSID == ""){errStr = "response_phpsessid_err";return false;}PHPSESSID = "PHPSESSID=" + PHPSESSID;}string _appid = MidStrEx(cookieStr, "appid=", ";");if (_appid == string.Empty || _appid == "" || _appid != AppID){errStr = "response_appid_err";return false;}//----------------------------------------------------------------------------- NumRan = MidStrEx(cookieStr, "rand=", ";");                             //请求随机TimeRnd = MidStrEx(cookieStr, "time=", ";");                            //请求时间RSARnd = MidStrEx(cookieStr, "key=", ";");                              //公钥加密dataLen = int.Parse(MidStrEx(cookieStr, "length=", ";"));               //数据长度if (NumRan == string.Empty || NumRan == "" || TimeRnd == string.Empty || TimeRnd == "" || RSARnd == string.Empty || RSARnd == "" || dataLen <= 0){errStr = "response_cooikes_err";return false;}KeyRnd = MD5(AppID + TimeRnd + NumRan + AppKey);                        //请求密钥KeyRnd = HmacMD5(KeyRnd, AppKey);                                       //请求密钥RSARnd = HexToStr(RSARnd);                                              //公钥加密//----------------------------------------------------------------------------- if (RSACheck(content, RSARnd, PuKey) == false){errStr = "response_check_err";return false;}content = RC4DEC(content, KeyRnd);if (content == string.Empty || content == "") {errStr = "response_rc4dec_err";return false;}content = UCompress(content, dataLen);if (content == string.Empty || content == ""){errStr = "response_ucompress_err";return false;}resultStr = content;return true;} catch{return false;}}#endregion#region 取随机数/// <summary>/// 取随机数/// </summary>/// <returns></returns>private static string RanNum() {try{Random rnd = new Random();string num = rnd.Next(11111111, 88888888).ToString();return num;}catch {return "";}}#endregion#region 取字符串中间/// <summary>/// 取字符串中间/// </summary>/// <param name="sourse">需要截取的字符串</param>/// <param name="startstr">字符串前面</param>/// <param name="endstr">字符串后面</param>/// <returns>返回截取后字符串</returns>private static string MidStrEx(string sourse, string startstr, string endstr){try{string result = "";int startindex, endindex;startindex = sourse.IndexOf(startstr);if (startindex == -1)return result;string tmpstr = sourse.Substring(startindex + startstr.Length);endindex = tmpstr.IndexOf(endstr);if (endindex == -1)return result;result = tmpstr.Remove(endindex);return result;}catch{return "";}}#endregion#region 数据解压/// <summary>/// 数据解压/// </summary>/// <param name="strSource">需要解压的字符串</param>/// <param name="sLen">字符串未压缩之前的长度</param>/// <returns>返回解压后字符串</returns>private static string UCompress(string strSource,int sLen){try {int data;int stopByte = -1;byte[] Buffer = Convert.FromBase64String(strSource); // 解base64MemoryStream intms = new MemoryStream(Buffer);ZInputStream inZStream = new ZInputStream(intms);byte[] inByteList = new byte[sLen];int i = 0;while (stopByte != (data = inZStream.Read())){inByteList[i] = (byte)data;i++;}inZStream.Close();return Encoding.UTF8.GetString(inByteList, 0, inByteList.Length);} catch {return "";}}#endregion#region 数据压缩/// <summary>/// 数据压缩/// </summary>/// <param name="Source">需要压缩的字符串</param>/// <returns>压缩后字符串</returns>private static string Compress(string Source){try{byte[] byteData = Encoding.UTF8.GetBytes(Source);MemoryStream ms = new MemoryStream();Stream s = new ZOutputStream(ms, 9);s.Write(byteData, 0, byteData.Length);s.Close();byte[] compressData = (byte[])ms.ToArray();ms.Flush();ms.Close();return Convert.ToBase64String(compressData);}catch{return "";}}#endregion#region 获取当前时间戳/// <summary>  /// 获取当前时间戳  /// </summary>  /// <param name="bflag">为真时获取10位时间戳,为假时获取13位时间戳.bool bflag = true</param>  /// <returns>返回时间戳字符串</returns>  private static string GetTimeStamp(bool bflag){try {TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);if (bflag)return Convert.ToInt64(ts.TotalSeconds).ToString();elsereturn Convert.ToInt64(ts.TotalMilliseconds).ToString();} catch{return "";}}#endregion#region 用MD5加密字符串/// <summary>/// 用MD5加密字符串/// </summary>/// <param name="password">待加密的字符串</param>/// <returns>返回的加密后的字符串</returns>private static string MD5(string password){try {MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();byte[] hashedDataBytes;hashedDataBytes = md5Hasher.ComputeHash(Encoding.UTF8.GetBytes(password));StringBuilder tmp = new StringBuilder();md5Hasher.Clear();md5Hasher.Dispose();foreach (byte i in hashedDataBytes){tmp.Append(i.ToString("x2"));}return tmp.ToString();//默认情况} catch{return "";}}#endregion#region HmacMD5加密/// <summary>/// HmacMD5加密/// </summary>/// <param name="source">需要加密的字符串</param>/// <param name="keyStr">用于加密的密钥</param>/// <returns>加密后的字符串</returns>private static string HmacMD5(string source, string keyStr){try {HMACMD5 provider = new HMACMD5(Encoding.UTF8.GetBytes(keyStr));byte[] hashedPassword = provider.ComputeHash(Encoding.UTF8.GetBytes(source));StringBuilder displayString = new StringBuilder();for (int i = 0; i < hashedPassword.Length; i++){displayString.Append(hashedPassword[i].ToString("X2"));}provider.Clear();provider.Dispose();return displayString.ToString().ToLower();//转换到小写}catch{return "";}}#endregion#region RC4加密/// <summary>/// RC4加密/// </summary>/// <param name="source">需要加密的字符串</param>/// <param name="keyStr">用于加密的密钥</param>/// <returns>返回加密后的字符串</returns>private static string RC4ENC(string source, string keyStr){try{byte[] contents = Encoding.UTF8.GetBytes(source);return Convert.ToBase64String(RC4(contents, keyStr));//转为base64编码}catch{return "";}}#endregion#region RC4解密/// <summary>/// RC4解密/// </summary>/// <param name="source">需要加密的字符串</param>/// <param name="keyStr">用于加密的密钥</param>/// <returns>返回解密后的字符串</returns>private static string RC4DEC(string source, string keyStr){try{byte[] data = Convert.FromBase64String(source);//base64编码还原byte[] str = RC4(data, keyStr);return Encoding.UTF8.GetString(str);}catch{return "";}}#endregion#region RC4加密解密/// <summary>/// RC4加密解密/// </summary>/// <param name="source">需要加密的字符串</param>/// <param name="keyStr">用于加密的密钥</param>/// <returns>加密后的字节集</returns>private static byte[] RC4(byte[] contents, string keyStr){byte[] results = new byte[contents.Length];byte[] pwds = Encoding.UTF8.GetBytes(keyStr);byte[] key = new byte[256];byte[] box = new byte[256];for (int i = 0; i < 256; i++){key[i] = pwds[i % pwds.Length];box[i] = (byte)i;}for (int j = 0, i = 0; i < 256; i++){j = (j + box[i] + key[i]) % 256;byte tmp = box[i];box[i] = box[j];box[j] = tmp;}for (int a = 0, j = 0, i = 0; i < contents.Length; i++){a = (a + 1) % 256;j = (j + box[a]) % 256;byte tmp = box[a];box[a] = box[j];box[j] = tmp;byte k = box[((box[a] + box[j]) % 256)];results[i] = (byte)(contents[i] ^ k);}return results;      }#endregion#region 字符串到十六进制/// <summary>/// 字符串到十六进制/// </summary>/// <param name="source">需要转十六进制的字符串</param>/// <returns>返回编好后的十六进制字符串</returns>private static string StrToHex(string source){try {string result = string.Empty;byte[] arrByte = Encoding.UTF8.GetBytes(source);for (int i = 0; i < arrByte.Length; i++){result += Convert.ToString(arrByte[i], 16);}return result.ToUpper();} catch{return "";}}#endregion#region 十六进制到字符串/// <summary>/// 十六进制到字符串/// </summary>/// <param name="hex">需要解码到字符串的十六进制文本</param>/// <returns>返回解码后的十六进制字符串</returns>private static string HexToStr(string hex){try{byte[] arrByte = new byte[hex.Length / 2];int index = 0;for (int i = 0; i < hex.Length; i += 2){arrByte[index++] = Convert.ToByte(hex.Substring(i, 2), 16);}return Encoding.UTF8.GetString(arrByte);} catch{return "";}}#endregion#region RSA公钥加密/// <summary>/// RSA公钥加密/// </summary>/// <param name="xmlPublicKey">公钥XML文件</param>/// <param name="content">需要加密的内容</param>/// <returns>返回加密后字符串</returns>private static string RSAENC(string xmlPublicKey, string content){try{string encryptedContent = string.Empty;using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()){rsa.FromXmlString(xmlPublicKey);byte[] encryptedData = rsa.Encrypt(Encoding.UTF8.GetBytes(content), false);encryptedContent = Convert.ToBase64String(encryptedData);}return encryptedContent;}catch {return "";}}#endregion#region RSA验证/// <summary>/// /// </summary>/// <param name="str">需要验证的文本</param>/// <param name="sign">私钥签名的字符串</param>/// <param name="str_publicKey">公钥XML文件</param>/// <returns>返回验证结果</returns>private static bool RSACheck(string str, string sign, string str_publicKey){try{byte[] SignedData = Convert.FromBase64String(sign);ASCIIEncoding ByteConverter = new ASCIIEncoding();byte[] DataToVerify = ByteConverter.GetBytes(str);RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider();RSAalg.FromXmlString(str_publicKey);bool result = RSAalg.VerifyData(DataToVerify, new SHA1CryptoServiceProvider(), SignedData);RSAalg.Clear();RSAalg.Dispose();return result;}catch{return false;}}#endregion}
}

PHP

<?php
//-----------------------APP基础配置----------------------------
define("app_id", "703093033");
define("app_key", "e2470a332d21d641298136c2754331aa");
//-----------------------RSA密钥配置----------------------------
define("private_key", "-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAy4RN2yLtquuGD77wX0IaWpfgbN70G5+dlhsfowKJy7oxP+cC
PKINXUkF5rSdTveGUlZDOtLYJghOD7biloJdW5+6mglGguVIC7430gdW/btT3Yul
3+IZa6Zj6SdGsmyOE4WPbjS6q8aUBmOdHf7dVYfbRVk9jZnBCEx/64S8kQI4Jz8o
2tV6rKvKkyTn///dBKDKSPWYtOG2bq7G1XwYrf8PLL0Ek7lRHX5w7JVWovDhKsGq
Xoho9CxM2sZRCSMeZpdBU9+xxFjNGl5NQHyWJefKzVdXFT9sF/UZGu1UXRuiCQyf
1LJvweIwyBo1ctcuJdRMNrZxoBCUYile2LiTQQIDAQABAoIBAHrt5aEyDeEp9oZY
TRUc9pI2HudkHIr69NMQeyGZjOY0Bz+UJ/O75tqsGxZpjoN+W/IsDNvhM5J1fcFc
NK24/O81Ih+c7qxuFgCR22HP8Sm+F0BA8+axya0Oilbw1HE9xOvhxutIimDrx8m8
LdFKeyMIttfCub1oXALJQpNeUBA99LBtVCV4aJdLTZh82XNCaKg0w7t+KLz8i98K
JAMvuYg6A4Vv0zlG1CbTvykOJ0CyKMw3BlQMRm7U+6K8g3S5pHpnCQJURssd58hr
uJAvDP4T1oEXEsqF135pQh2oK7qufHRgRWTSihHUXIx/uFXs52BvPIt7meJq6PBG
ONA28ykCgYEA8n+HrygKpCEHhyrtwtiV2zwBnEcQz10TVtp7vmWYm3ECpLobwyJI
sSiq0fUMPga1bDYxtxRXkOI+bj3e7jBPcmhvlQvvWeXBUhtq8J1wQzYlg+HI4+K/
oUfT3hY6Vp/4eVLA9ro3NPPwXDRyjS/UsKtiMb1PInRcER/4AFdkLBsCgYEA1tkm
Woxp+dgK7TRIdsdk3B3E6H/HmzADZYtJr7BxePhp4HJtXFakAHiY90mAeu2TvyeM
ewYXEE/wGqdae7yVydgHchHd8auGOIoimlhRmmOM6Hvmr4KvYDXgK3dHSCrueNhB
U/CWyTeFYKHNhbEbkswvDESohqGKWjzUqkTaO9MCgYBfvP3Cp1pcJjYkpUwtSvkP
DwfLvTrjw2lpNuT37IBtjhZvFpLzXUu5tcaLEeX9bwSdbl/+WeegadIgEAk9nJEh
KB41h/q9UTobwntb96xkvLHe+XsojVL+x67b1Ya+wHWG4KcSQb6eB1jz7jjziNi9
z0v7OzRM9AeNM0PkTpxb1QKBgBdUBMIYNPmX57fR0Xx0MhNkeBj2punG0NeZxCp7
cha8gmKIii9YiP40Ggffxz+RxFUhKjPBeYef5mY+faip1WnRNx2/quWuxigld5Ri
upmU7ZvguC+edQRxVSHjFa5UWwhsEsvWd8jpamYPq400qdXKreEbI2Fa8PbTXBQQ
3dFZAoGAVPeYH7IWLiMUsRHY5r/oEZjAjHj1QadARtgAX8NCopRbplsJHadXqg5y
UiPRRDn5XFROf0PqgDrVUN2vLkKrQQIlJPvruQNDELyXkwQWPVbNA1Q2aLIi5GWt
OzUJVxNNHxo+//GLZD09ZKdDiBUtYGqFU3cE1+CSA6L5IRVqTFo=
-----END RSA PRIVATE KEY-----");
//-----------------------校验函数定义----------------------------
//十六进制转字符串
function hexToStr($hex){$string="";for($i=0;$i<strlen($hex)-1;$i+=2)$string.=chr(hexdec($hex[$i].$hex[$i+1]));return $string;
}
//字符串转十六进制
function strToHex($string){$hex="";for($i=0;$i<strlen($string);$i++)$hex.=dechex(ord($string[$i]));$hex=strtoupper($hex);return $hex;
}
//私钥解密由加密函数加密后的base64编码
function rsadec($data){     $pi_key = openssl_pkey_get_private(private_key);$data = base64_decode($data);$decrypted = "";$isOkay = openssl_private_decrypt($data, $decrypted, $pi_key);if(!$isOkay){return false;}    return $decrypted;
}
//RSA签名
function getSign($signString){$privKeyId = openssl_pkey_get_private(private_key);$signature = '';openssl_sign($signString, $signature, $privKeyId);openssl_free_key($privKeyId);return base64_encode($signature);
}
//HMAC_MD5加密
function hmac($data, $key){if (function_exists('hash_hmac')) {return hash_hmac('md5', $data, $key);}$key = (strlen($key) > 64) ? pack('H32', 'md5') : str_pad($key, 64, chr(0));$ipad = substr($key,0, 64) ^ str_repeat(chr(0x36), 64);$opad = substr($key,0, 64) ^ str_repeat(chr(0x5C), 64);return md5($opad.pack('H32', md5($ipad.$data)));
}
//rc4加密并返回base64编码
function rc4enc($pwd, $data){return base64_encode(rc4($pwd, $data));
}
//解密由加密函数加密后的base64编码
function rc4dec($pwd, $data){$data = base64_decode($data);return rc4($pwd, $data);
}
//RC4加密解密
function rc4($pwd, $data){$cipher      = "";$key[]       = "";$box[]       = "";$pwd_length  = strlen($pwd);$data_length = strlen($data);for ($i = 0; $i < 256; $i++) {$key[$i] = ord($pwd[$i % $pwd_length]);$box[$i] = $i;}for ($j = $i = 0; $i < 256; $i++) {$j       = ($j + $box[$i] + $key[$i]) % 256;$tmp     = $box[$i];$box[$i] = $box[$j];$box[$j] = $tmp;}for ($a = $j = $i = 0; $i < $data_length; $i++) {$a       = ($a + 1) % 256;$j       = ($j + $box[$a]) % 256;$tmp     = $box[$a];$box[$a] = $box[$j];$box[$j] = $tmp;$k       = $box[(($box[$a] + $box[$j]) % 256)];$cipher .= chr(ord($data[$i]) ^ $k);}return $cipher;
}//回复验证信息
function sendMsg($msg){$time = time();$rand = rand(11111111, 88888888);$md5 = md5(app_id.$time.$rand.app_key);$md5 = hmac($md5,app_key);setcookie("appid",app_id,time() + 300);  //5分钟内有效setcookie("time",$time,time() + 300);        //5分钟内有效setcookie("rand",$rand,time() + 300);        //5分钟内有效//----------------------------------------------$len = strlen($msg);                       //长度setcookie("length",$len,time() + 300);       //5分钟内有效//----------------------------------------------$str = base64_encode(gzcompress($msg, 9)); //压缩$str = rc4enc($md5,$str);                  //加密$key = getSign($str);                      //签名$key = strToHex($key);setcookie("key",$key,time() + 300);       //5分钟内有效//----------------------------------------------echo $str;exit();
}
//-----------------------取出_COOKIE----------------------------
$appid = $_COOKIE["appid"];      //请求标识
$time = $_COOKIE["time"];        //请求时间
$rand = $_COOKIE["rand"];        //请求随机
$length = $_COOKIE["length"];    //数据长度
$key = $_COOKIE["key"];          //公钥加密
$now = time() - 1;             //现行时间戳(减1防止提交太快造成负数)
//判断参数合法性
if($appid == "" or $time =="" or $rand =="" or $length =="" or $key ==""){echo "COOKIE_ERR";exit();
}
//判断appid
if($appid != app_id){echo "AppID_ERR";exit();
}
//请求间隔
$interval = $time - $now;
//必须是10秒之内的请求
if($interval < 0 or $interval > 10){echo "interval_err";exit();
}
//判断随机数
if($rand <= 0){ echo "rand_err";exit();
}
//还原加密串
$key = hexToStr($key);
if($key == ""){echo "key_err";exit();
}
//解密加密串
$key = rsadec($key);
if($key == ""){ echo "rsa_err";exit();
}
//检测公钥加密
$md5 = md5($appid.$time.$rand.app_key);
$md5 = hmac($md5,app_key);
if($key != $md5){                  echo "rc4_err";exit();
}
//取请求数据
$post = file_get_contents('php://input');
if($post == ""){echo "post_err";exit();
}
//解密数据
$post = rc4dec($key,$post);
if($post == ""){echo "rc4dec_err";exit();
}
//解压数据
$post = gzuncompress(base64_decode($post));
if($post == ""){echo "gzuncompress_err";exit();
}echo sendMsg($post);?>

C# + PHP RSA保密通讯相关推荐

  1. 初等数论 课堂笔记 第三章 -- 保密通讯与公开密钥

    索引 保密通讯 仿射密码 例子 指数密码 ( Pohlig, Hellman, 1978 ) 例子 RSA公开密钥体制( Rivest, Shamir, Adleman, 1977; 英国情报部门的C ...

  2. 与非营利朕亨基金会合作 Keybase将保密通讯软体结合加密货币

    保密通讯软件Keybase在部落格宣布,现在开始由非营利组织Stellar基金会资助,并透露会与Stellar加密货币功能结合,发布新的版本. Keybase的共同创办人Chris Coyne表示,之 ...

  3. ios下使用rsa算法与php进行加解密通讯

    首先了解一下几个相关概念,以方便后面遇到的问题的解决: RSA算法:1977年由Ron Rivest.Adi Shamirh和LenAdleman发明的,RSA就是取自他们三个人的名字.算法基于一个数 ...

  4. RSA加密解密在jsencrypt+c#的实现-博客园加密登录

    前几天发现博客园登录时,对登录的数据进行了加密,在我这种菜鸟看来算是高大上的功能了,于是决定研究一下. 后来发现其实园子里或者网上有类似文章,但好像都是php写的demo,并没有c#的示例,所以在收集 ...

  5. Javascript到PHP加密通讯的简单实现

    互联网上大多数网站,用户的数据都是以明文形式直接提交到后端CGI,服务器之间的访问也大都是明文传输,这样可被一些别有用心之人通过一些手段监听到.对安全性要求较高的网站,比如银行和大型企业等都会使用HT ...

  6. Android混流技术,基于Android的实时语音混沌保密技术的实现

    摘要: 网络和多媒体技术的发展和成熟,使之通过网络进行语音交流越来越流行,同时,网络的开放和共享性使信息安全问题也得到更多的关注.因此,怎样实现语音的安全通信的研究变得越来越重要.混沌系统由于自身独特 ...

  7. PHP-RSA加密跨域通讯实战

    PHP-RSA加密跨域通讯实战 AUTH:PHILO EMAIL:lijianying12 at gmail.com 基于POST GET 的http通讯虽然非常成熟,但是很容易被人监听. 并且如果使 ...

  8. “九”答不可 | 量子通信如何做到安全保密?

    导读 打个电话,会不会被窃听?通过网络传送一份保密文件,途中被他人窃取咋办--现代社会,信息安全面临的问题越来越多. 有没有一种不可破译的保密方式,能让传送的信息绝对安全可靠?量子通信技术的飞跃发展正 ...

  9. OpenSSL简介及在Windows、Linux、Mac系统上的编译步骤

    OpenSSL介绍:OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法.常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用. SSL是SecureSock ...

最新文章

  1. 外部样式表声明的样式并不会进入style对象
  2. Java-小技巧-004-jdk时间,jdk8时间,joda,calendar,获取当前时间前一周、前一月、前一年的时间...
  3. dll可以在linux下使用吗_无需虚拟技术,6步直接在Windows下使用Linux
  4. JDBC、DriverManage、JNDI、数据源(DataSource)、连接池的区别
  5. SQLServer常用系统视图
  6. 如何写出好的Java代码?
  7. 解决方案/DIV+CSS 在 IE7/IE6/Firefox间的兼容性问题
  8. Use YSlow to know why your web Slow
  9. java 微信公众号消息推送 微信发送消息
  10. docker执行权限问题Got permission denied while trying to connect to the Docker daemon socket
  11. TCP BBR Startup gain计算总结和Startup失速问题
  12. 微信小程序——猜数字游戏小案例
  13. 计算机毕业设计Python+uniapp快递寄取微信小程序(小程序+源码+LW)
  14. SpringCloud之搭建PiggyMetrics项目
  15. 重庆事业单位计算机知识,重庆事业单位考试全面知识点汇总
  16. JS:二分搜索(3)—— 子序列、信封嵌套、阶乘数的0
  17. 罕见!谷歌员工成立工会,国外网友:员工维权行动已席卷硅谷!
  18. 2020年第二届网鼎杯,青龙队伍题目,共十八道
  19. 输入三角形的3边长,求三角形面积
  20. 10月笔试面试记录分享

热门文章

  1. 程序崩溃APPcrash的问题
  2. 卡耐基人际关系学-第一章 卡耐基应付对手的方法-一 避免伤害的艺术
  3. 计算机excel中累计如何计算,『EXCEL表中,累计计算公式如何设置』excel分段累计求和...
  4. 姚明全部比赛录像合集【百度网盘高清分享】
  5. pc系统设计演变_设计师的演变
  6. Ubuntu13.04配置完全指南(四)安装常用软件包
  7. wps linux 程序转pdf文件,将PowerPoint转换成PDF的九款免费软件(附下载)
  8. 【安卓10修改系统文件】安卓10修改系统文件hosts
  9. 苹果计算机怎么开科学,苹果手机怎样设置科学计算器?
  10. 精美好用的思维导图插件,无缝对接各种前端框架,快来围观吧