程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#裡的一些加密解密標准函數示例——DES,SHA1,RSA(2)

C#裡的一些加密解密標准函數示例——DES,SHA1,RSA(2)

編輯:關於C語言

二. SHA1 加密 (HASH算法沒有解密)

安全哈希算法(Secure Hash Algorithm)主要適用於數字簽名標准(Digital Signature Standard DSS)裡面定義的數字簽名算法(Digital Signature Algorithm DSA)。對於長度小於2^64位的消息,SHA1會產生一個160位的消息摘要。當接收到消息的時候,這個消息摘要可以用來驗證數據的完整性。在傳輸的過程中,數據很可能會發生變化,那麼這時候就會產生不同的消息摘要。

SHA1有如下特性:不可以從消息摘要中復原信息;兩個不同的消息不會產生同樣的消息摘要。

代碼如下:

/// <summary>
/// use sha1 to encrypt string
/// </summary>
public string SHA1_Encrypt(string Source_String)
{
 byte[] StrRes = Encoding.Default.GetBytes(Source_String);
 HashAlgorithm iSHA = new SHA1CryptoServiceProvider();
 StrRes = iSHA.ComputeHash(StrRes);
 StringBuilder EnText = new StringBuilder();
 foreach (byte iByte in StrRes)
 {
  EnText.AppendFormat("{0:x2}", iByte);
 }
 return EnText.ToString();
}

三.RSA 加密、解密 (本例來自 MSDN)

RSA加密算法是一種非對稱加密算法。在公鑰加密標准和電子商業中RSA被廣泛使用。RSA是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的。當時他們三人都在麻省理工學院工作。RSA就是他們三人姓氏開頭字母拼在一起組成的。

RSA算法的可靠性基於分解極大的整數是很困難的。假如有人找到一種很快的分解因子的算法的話,那麼用RSA加密的信息的可靠性就肯定會極度下降。但找到這樣的算法的可能性是非常小的。今天只有短的RSA鑰匙才可能被強力方式解破。到2008年為止,世界上還沒有任何可靠的攻擊RSA算法的方式。只要其鑰匙的長度足夠長,用RSA加密的信息實際上是不能被解破的。

具體算法過程請參考http://zh.wikipedia.org/wiki/RSA%E5%8A%A0%E5%AF%86%E6%BC%94%E7%AE%97%E6%B3%95

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved