/// /// md5加密,和動網上的16/32位md5加密結果相同,
/// 使用的utf8編碼
///
/// 待加密字串
/// 16或32值之一,其它則採用.net預設md5加密演算法
/// 加密後的字串
public static string encrypt(string source, int length = 32)//預設引數
break;
case 32:
for (int i = 0; i < 16; i++)
break;
default:
for (int i = 0; i < hashvalue.length; i++)
break;
}return sb.tostring();
}
用途:/// 1 防止被篡改
/// 2 防止明文儲存
/// 3 防止抵賴,數字簽名
//1 防止看到明文
//密碼–md5一下–儲存–登陸的時候–輸入的密碼也md5一下–比對
//md5不能解密?不能解密 網上的解密都是基於樣本比對
//密碼複雜點 加鹽(密碼+ruanmou 再md5)(雙md5)
//檔案摘要,只有相同檔案才能相同的md5
// git/svn:md5比對
//任何資料md5後結果都不一樣,到目前為止還沒碰到 2的128次方
//防抵賴:文章--md5(權威機構)
檔案的md5
/// /// 獲取檔案的md5摘要
///
///
///
public static string abstractfile(string filename)
}/// /// 根據stream獲取檔案摘要
///
///
///
public static string abstractfile(stream stream)
return sb.tostring();
}
對稱:加密解密的金鑰是一樣的,,關鍵點就是儲存藏好金鑰,,但因為需要把密碼傳給解密的一方,所以安全是乙個問題
public class desencrypt
}/// /// des解密
///
///
/// 解密後的結果
public static string decrypt(string encrypttext)}}
其中關於memorystream的講解
/// /// 獲取加密/解密對
/// 給你乙個,是無法推算出另外乙個的
///
/// encrypt decrypt
///
/// encrypt decrypt
public static keyvaluepairgetkeypair()
/// /// 加密:內容+加密key
///
///
/// 加密key
///
public static string encrypt(string content, string encryptkey)
/// /// 解密 內容+解密key
///
///
/// 解密key
///
public static string decrypt(string content, string decryptkey)
/// /// 可以合併在一起的,,每次產生一組新的金鑰
///
///
/// 加密key
/// 解密key
/// 加密後結果
private static string encrypt(string content, out string publickey, out string privatekey)
//加金鑰 解金鑰 鑰匙的功能劃分
//公鑰 私鑰 公開程度劃分
//根據需求 可以交錯的,兩組公鑰金鑰一塊用就可以實現資訊傳輸的完全加密,
數字簽名實際上就是上面非對稱加密時的認證模式,只不過做了一點點的改進,加入了雜湊演算法。大家比較熟悉的雜湊演算法可能就是md5了,很多開源論壇都採用了這個演算法。雜湊演算法有三個特點:一是不可逆的,由結果無法推算出原資料;二是原資料哪怕是一丁點兒的變化,都會使雜湊值產生巨大的變化;三是不論多麼大或者多麼少的資料,總會產生固定長度的雜湊值(常見的為32位64位)。產生的雜湊值通常稱為訊息的摘要(digest)。傳送方
1.將訊息進行雜湊運算,得到訊息摘要。
2.使用自己的私鑰對訊息摘要加密(認證模式:確保了接收方能夠確認自己)。
3.使用接收方的公鑰對訊息進行加密(加密模式:確保了訊息只能由期望的接收方解密)。
4.傳送訊息和訊息摘要。
接下來我們看一下接收方所執行的步驟:
1.使用傳送方的公鑰對訊息摘要進行解密(確認了訊息是由誰傳送的)。
2.使用自己的私鑰對訊息進行解密(安全地獲得了實際應獲得的資訊)。
3.將訊息進行雜湊運算,獲得訊息摘要。
4.將上一步獲得的訊息摘要 和 第一步解密的訊息摘要進行對比(確認了訊息是否被篡改)。
與數字簽名相關的乙個概念就是證書機制了,證書是用來做什麼呢?在上面的各種模式中,我們一直使用了這樣乙個假設,就是接收方或者傳送方所持有的、對方的公鑰總是正確的(確實是對方公布的)。而實際上除非對方手把手將公鑰交給我們,否則如果不採取措施,雙方在網路中傳遞公鑰時,一樣有可能被篡改。那麼怎樣解決這個問題呢?這時就需要證書機制了:可以引入乙個公正的第三方,當某一方想要發布公鑰時,它將自身的身份資訊及公鑰提交給這個第三方,第三方對其身份進行證實,如果沒有問題,則將其資訊和公鑰打包成為證書(certificate)。而這個公正的第三方,就是常說的證書頒發機構(certificateauthority)。當我們需要獲取公鑰時,只需要獲得其證書,然後從中提取出公鑰就可以了。
ssl的驗證過程如下圖所示(單邊驗證)ssl加http就變成了https
C 程式設計小細節
本文寫給自己看看,記錄一些程式設計中的小細節!1.if 0 a 當我們判斷變數與一常量是否相等時,最好把常量 0 放前面,而不是寫成if a 0 因為如果我們手誤,當判斷語句 寫成了 那麼if 0 a 會直接報錯,方便我們發現錯誤,而if a 0 不會。常見情況還有比如 if nullptr p 2...
C語言細節知識(四)
if 整型常量表示式1 程式段1 elif 整型常量表示式2 程式段2 elif 整型常量表示式3 程式段3 else 程式段4 endif 它的意思是 如常 表示式1 的值為真 非0 就對 程式段1 進行編譯,否則就計算 表示式2 結果為真的話就對 程式段2 進行編譯,為假的話就繼續往下匹配,直到...
C 程式設計中的細節
乙個簡單的示例來講解下這個問題。cpp class concrete class concrete1 class concrete2 public concrete1 class concrete3 public concrete2 int main 本來bit2的值是b,但是通過賦值後 bit2的...