下面是網(wǎng)絡(luò)傳輸中常用的幾種加密方式:
(學(xué)習(xí)視頻分享:編程視頻)
提示:這些加密涉及明文傳輸?shù)模枰?a href="http://www.babyishan.com/tag/https">https協(xié)議上加密傳輸。
1、密鑰散列
采用MD5或者SHA1等散列算法,對明文進(jìn)行加密(這里的加密僅對人,不對機(jī)器,因為這些算法機(jī)器可以用對應(yīng)算法算出來)
優(yōu)點:防篡改
適用場景:普通文件下載
缺點:不具備安全性,可認(rèn)證性
2、對稱加密
優(yōu)點:安全、可認(rèn)證
適用場景:收發(fā)方數(shù)量固定,密鑰使用對象少
缺點:BS網(wǎng)絡(luò)傳輸關(guān)系,密鑰過多難維護(hù),除非對密鑰進(jìn)行加密傳輸
3、非對稱加密
3.1、接收方發(fā)送公鑰(保證數(shù)據(jù)完整性)
前提:首次通信時發(fā)送方接收了接收方的公鑰,并保存在本地
3.2、發(fā)送方發(fā)送公鑰(保證發(fā)送方認(rèn)證)
前提:首次通信時接收方接收了發(fā)送方的公鑰,并保存在本地
4、數(shù)字簽名
適用場景:登錄認(rèn)證
缺點:不具備足保密性
速記
對稱算法
對稱算法(SymmestricAlgorithm).Create()=>
Provider.CreateEncryptor()
Provider.CreateDecryptor()
CryptoStream(Stream stream,ICrytotransform transform,CryptoStreamMode mode):
CryptoStream(encryptedSteam,encryptor,CryptoStreamMode.Write)//加密 準(zhǔn)備讀取 空encryptedSteam準(zhǔn)備被寫入
CryptoStream(encryptedSteam,decryptor,CryptoStreamMode.Read)//解密 準(zhǔn)備寫入 密文流encryptedSteam準(zhǔn)備被讀取
非對稱加密
非對稱加密(ASymmistricAlgorithm):
Provider provider
provider.ToXmlString(true);//獲得公私鑰對
provider.ToXmlString(false);//獲得公鑰
provier.FromXmlString(publicKeyXml);
provier.FromXmlString(privateKeyXml);
provider.Encrypt();
provider.Decrypt();
實例:
對稱加密:
????????????string?key?=?"abc"; ????????????string?sendContent="你好!"; ????????????var?byteKey?=?Encoding.UTF8.GetBytes(key); ????????????var?byteIV?=?Encoding.UTF8.GetBytes(key);//加密算法初始化向量 ????????????DESCryptoServiceProvider?des?=?new?DESCryptoServiceProvider();//使用des加密 ????????????byte[]?bytesContent?=?Encoding.UTF8.GetBytes(sendContent); ????????????MemoryStream?ms?=?new?MemoryStream(); ????????????CryptoStream?cs?=?new?CryptoStream(ms,?des.CreateEncryptor(byteKey,?byteIV),?CryptoStreamMode.Write); ????????????cs.Write(bytesContent,?0,?bytesContent.Length); ????????????cs.FlushFinalBlock();
相關(guān)推薦:編程視頻