您好,登錄后才能下訂單哦!
如何利用RSA證書加解密敏感數據,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
RSA算法的描述中,文章利用makecert工具生成的生成的MyTestCert證書舉行加密解密,這個證書具有RSA算法1024位的密鑰對。
Figure 12. RSA加密解密過程如下:
1、 生成證書、發放證書
證書利用前面“利用makecert工具獲得”章節生成的MyTestCert,當然也能夠是從商業CA獲得的證書。你獲得的證書該當是含有公鑰和私鑰的全面證書,等閑是pfx形式的證書。要接逝步柢數據,必需把你的公鑰發放給加密數據的加密方,加密方利用你的公鑰加密數據。證書要么以pfx形式存在,要么被導入到證書存儲區。
萬一你的證書存在于證書存儲區能夠穿越證書管教扼制臺供給的證書導出功能導出只含有公鑰的cer證書。萬一證書以pfx證書文件形式存在,能夠穿越代碼讀取證書然后導出為只含公鑰的cer證書。
2、 字符串明文轉成某一代碼頁對應的編碼字節流
待加密的數據可能有兩種形式,一種是二進制的數據,本身即便一組字節流,這么的數據能夠跳過這一步,直接進去加密環節。還有一種情形是字符串數據,字符串中同樣的字符利用不同的代碼頁會生成不同的字節碼,因而從字符串到字節流的轉換是必需指定利用何種編碼的。在解密爾后,要從字節流通換到字符串即將利用雷同的代碼頁解碼,否則就會揭示亂碼。
//保留明文文件的字節數組
Byte[] plainTextByte = Encoding.UTF8.GetBytes(&ldquohttp://www.9tishop.info/lianxiwomen/545.htmlhttp://www.damuge.info/gongsi/627.html;RSA證書對敏感數據舉行加密http://www.myfo4.info/lianxiwomen/627.html!”);
這里用utf8代碼頁對明文舉行編碼,把明文字符串轉成字節流。
3、 加密壟斷
//從只包括公鑰的證書文件載入證書
X509Certificate2 myX509Certificate2 = new X509Certificate2(@"C:/Samples/PartnerAEncryptMsg/MyTestCert.cer");
//從cer證書中獲得含公鑰的RSACryptoServiceProvider
RSACryptoServiceProvider
//利用RSACryptoServiceProvider
Byte[] Cryptograph = myRSACryptoServiceProvid
利用1024為的密鑰加密,原料該當是128字節(1024位)的byte[]的原始數據,加密后的數據也是128字節(1024位),萬一明文不足128字節,RSACryptoServiceProvider
Dotnet的RSA告終有個個性,它定然要在明文中增加一些隨機數,因而明文不能把128字節占滿,切實測驗,明文最多為117字節,留下的空間用來添補隨機數。
因而,用統一個密鑰對統一串字符串舉行加密,每次獲得的密文都是不一樣的。
4、 解密壟斷
//從證書文件載入證書,萬一含有私鑰的,必需供給保留證書時設置的密碼
X509Certificate2 myX509Certificate2 = new X509Certificate2(@"C:/Samples/PartnerAEncryptMsg/MyTestCert.pfx", "password");
//從證書中獲得含私鑰的RSACryptoServiceProvider
RSACryptoServiceProvider
//利用RSACryptoServiceProvider
byte[] plaintextByte = myRSACryptoServiceProvid
解密必需載入含私鑰的pfx證書,必需供給私鑰防御密碼。
5、 從編碼字節流通成字符串明文
利用加密時批準的同樣的代碼頁utf8把解密后的明文byte[]轉成字符串:string Plaintext = Encoding.UTF8.GetString(plaintextByte);
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。