rsa加密演算法是一種非對稱加密演算法。在公鑰加密標準和電子商業中rsa被廣泛使用。rsa是2023年由羅納德•李維斯特(ron rivest)、阿迪•薩莫爾(adi shamir)和倫納德•阿德曼(leonard adleman)一起提出的。當時他們三人都在麻省理工學院工作。rsa就是他們三人姓氏開頭字母拼在一起組成的。.net的推出,我們能夠利用.net framework中的類提供的加密服務來保證資料安全。目前應用較為廣泛的加密方法是使用rsa演算法進行加密。在.net framework中與rsa加密演算法相關的類主要有兩個:rsa 類和rsacryptoserviceprovider 類。按照msdn的說法rsa 類是「表示 rsa 演算法的所有實現均從中繼承的基類」,而rsacryptoserviceprovider 類是「使用加密服務提供程式 (csp) 提供的 rsa 演算法的實現執行不對稱加密和解密」。另外,「表示 rsa 演算法的標準引數」的rsaparameters 結構也是很重要的,它儲存了rsa演算法的引數。
這裡具體講述一下在c#中如何使用框架提供的rsa演算法來對我們的資訊加密、簽名、驗證簽名、解密的這個幾個步驟的實現
using system.security.cryptography;
using system.management;
using microsoft.win32;
/// /// 生成公私鑰
///
///
///
public void rsakey(string privatekeypath, string publickeypath)
catch (exception exception)
}/// /// 對原始資料進行md5加密
///
/// 待加密資料
/// 返回機密後的資料
public string gethash(string m_strsource)
/// /// rsa加密
///
/// 公鑰
/// md5加密後的資料
/// rsa公鑰加密後的資料
public string rsaencrypt(string xmlpublickey, string m_strencryptstring)
catch (exception exception)
return str2;
}/// /// rsa解密
///
/// 私鑰
/// 待解密的資料
/// 解密後的結果
public string rsadecrypt(string xmlprivatekey, string m_strdecryptstring)
catch (exception exception)
return str2;
}/// /// 對md5加密後的密文進行簽名
///
/// 私鑰
/// md5加密後的密文
///
public string signatureformatter(string p_strkeyprivate, string m_strhashbytesignature)
/// /// 簽名驗證
///
/// 公鑰
/// 待驗證的使用者名稱
/// 註冊碼
///
public bool signaturedeformatter(string p_strkeypublic, string p_strhashbytedeformatter, string p_strdeformatterdata)
return false;
}catch
}/// /// 獲取硬碟id
///
/// 硬碟id
public string gethardid()
return hdinfo;
}/// /// 讀登錄檔中指定鍵的值
///
/// 鍵名
/// 返回鍵值
private string readreg(string key)
catch (exception)
} /// /// 建立登錄檔中指定的鍵和值
///
/// 鍵名
/// 鍵值
private void writereg(string key, string value)
catch (exception)
}/// /// 建立公鑰檔案
///
///
///
public void createpublickeyxml(string path, string publickey)
catch
}/// /// 建立私鑰檔案
///
///
///
public void createprivatekeyxml(string path, string privatekey)
catch
}/// /// 讀取公鑰
///
///
///
public string readpublickey(string path)
/// /// 讀取私鑰
///
///
///
public string readprivatekey(string path)
/// /// 初始化登錄檔,程式執行時呼叫,在呼叫之前更新公鑰xml
///
/// 公鑰路徑
public void initialreg(string path)
else
}
如果是要對傳送的訊息進行加密和解密,加密時用公鑰,解密時用私鑰,即使密文被竊取也無法破解。
如果是要對軟體進行註冊,生成註冊碼,則服務端將使用者的硬碟號用私鑰加密,客戶端用公鑰解密,解密後將客戶端的硬碟號進行md5加密,將得到的結果和解密後的結果進行比較,如果相同,說明是註冊使用者,否則為非註冊使用者。
RSA 非對稱加密演算法
1.對稱加密 甲方選擇某一種加密規則,對資訊進行加密 乙方使用同一種規則,對資訊進行解密。非對稱加密 乙方生成兩把金鑰 公鑰和私鑰 公鑰是公開的,任何人都可以獲得,私鑰則是保密的。甲方獲取乙方的公鑰,然後用它對資訊加密。乙方得到加密後的資訊,用私鑰解密。2.尤拉定理 rsa演算法的核心 可以大大簡化...
非對稱加密演算法 RSA
1 非對稱加密過程 國內使用的是雙證書體系 即使用者同時擁有簽名證書 和加密證書 兩張證書。簽名證書 是使用者的身份驗證是和ca協商的結果 加密證書 是用來對資訊進行加密,是使用者和秘鑰管理系統生成 過程是生成公鑰和私鑰的過程,基於rsa演算法實現 過程是ca對使用者的身份進行簽名,目的是驗證a的身...
非對稱加密演算法 RSA
rsa加密演算法於1977年由美國麻省理工學院的ronal rivest,adi shamir和len adleman三位年輕教授提出,並以三人的姓氏rivest,shamir和adleman命名為rsa演算法。這三位科學家榮獲2002年度圖靈獎,以表彰他們在演算法方面的突出貢獻。該演算法利用了數論...