Windows 8 系列(四):Win8 RSA加密相關問題

來源:互聯網
上載者:User

最近好久沒有發win8系列的文章了,這段時間工作中積累了一些經驗和問題,現在拿出來跟大家分享一下。

 

關於RSA密碼編譯演算法,在Win8中用起來不太方便。不像其他平台一樣匯入認證檔案或者匯入N值、E值,而是需要匯入ASC碼資料。據說windows phone中也一樣,需要把密鑰中的資訊解析成ASC碼,組成數組,用AsymmetricKeyAlgorithmProvider.ImportPublicKey()方法才能匯入。相關代碼如下:(nBytes就是ASC碼資料,類型為byte[])

 

 

在Windows Phone中,直接匯入由密鑰產生的數組就可以,但是Win8上總是提示失敗,編譯不過,提示ASN1 bad tag value met.。如:

 

 

由於目前Win8和相關參考資料較少,還沒有多少開發人員真正的遇到過這些問題,所以,我的同事只能從一些其他平台的RSA資料包的例子中參考,經過近一天時間的尋找,終於在一次測試中通過了,解決辦法是在原密鑰ASC碼數組的前面加入了“82, 83, 65, 49, 0, 4, 0, 0, 3, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1,”這一段ASC碼值,將這一串ASC碼轉換成字元後是

這個相當於是一個資訊頭。

面對無資料可循的問題,我們能夠解決這個問題,實屬不易,如果沒有遇到那個例子,不知道何時才能解決這個問題。這個問題雖然暫時解決了,但是我們並沒有找到解決這個問題的根本辦法,如果這個問題以後再次出現,我們就不知道還得“試”到什麼時候

 

擔心的事情終究是發生了,在安裝了最新發行的Win8系統升級包後,這裡報錯了。起初我們還以為是API變化導致的,可是我們看了API文檔後沒有找到相關可以解決的辦法,最後我們求助了微軟,想知道是系統的問題,還是API的問題,還是我們自己的問題。

我們再次在這個問題上花費了將近兩天的時間,終於在 @馬蔬菜(新浪微博)的協助下,我們走入了正途,他發現API中有個CreateKeyPair方法,可以建立指定長度的Key,於是,我們用這個方法同時建立了兩個Key,對比他們的相同之處,把它們加入到我們的密鑰數組中,不就OK了嗎?

 

於是我們用了以下代碼:

1             CryptographicKey keyPair = Algorithm.CreateKeyPair(1024);2             CryptographicKey keyPair2 = Algorithm.CreateKeyPair(1024);3             var blobOfPublicKey = keyPair.ExportPublicKey();4             var blobOfPublicKey2 = keyPair2.ExportPublicKey();5             byte[] newBuffer, newBuffer2;6             CryptographicBuffer.CopyToByteArray(blobOfPublicKey, out newBuffer);7             CryptographicBuffer.CopyToByteArray(blobOfPublicKey2, out newBuffer2);

這裡需要說明一下,為什麼我們建立了1024的,而不是其他的長度呢,我們發現我們的密鑰在轉換成IBuffer對象後的長度是128,1024的key轉換成IBuffer後是162,最接近128,因此應該是會有38位的“頭”和“尾”。

查看newBuffer和newBuffer2的差異後,我們發現頭和尾分別有部分數組元素是一樣的,我們把它們加入到我們的密鑰數組中,再次運行ImportPublicKey()方法,執行通過。至此,我們的RSA加密問題終於解決了,而且是徹底解決了,如果以後這裡再報錯,就可以還拿上面這段代碼比較相同的部分,得出“頭”和“尾”。

 

以上是我們工作中遇到的問題和相關的解決方案,希望能夠協助到大家。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.