我試圖在Delphi中找到一些如何使用Microsoft CryptoAPI簽署一段數據的完整示例。在線我發現大部分片段和僞代碼,但沒有具體的例子來說明如何做到這一點。使用MS cryptoAPI與Delphi簽署文檔
從我所瞭解的情況來看,花了一天的時間尋找代碼和信息,你可以創建基於公鑰的文檔/文件的哈希(或者如果你自己生成一對,或者由證書提供鑰匙扣)。然後該散列被編碼到加密的輸出文件(容器部分)中,並且可以由持有該私鑰的接收器驗證和解碼。
如果德爾福例如犯規存在,在那裏我可以用它來簽署文件/文件任何自由commanline程序?
我發現代碼MD5/SHA-1散列和還一個加密使用密碼的字符串(從導出在飛行中產生的keypar的散列)的文件。但遺憾的是沒有簽署一個流或一個文件。 對谷歌最近的比賽是由TurboPower公司(密碼箱),較舊的產品,但我不知道如果生成的輸出與MS的CryptoAPI兼容
更新(?):這是一起的我是什麼東西行尋找,但寫在C: http://blogs.msdn.com/b/alejacma/archive/2008/01/23/how-to-sign-and-verify-with-cryptoapi-and-a-user-certificate.aspx
此外,當你降級問題 - 足以描述你爲什麼這樣做。對於德爾福來說,對於您在大型企業應用中遇到的問題,這是一個完全有效的問題
有一個Delphi MD5庫,'MessageDigest_5.pas'。它可以將一個動態字節數組作爲輸入,所以如果您願意,可以傳遞一個數據流。源代碼位於'.. \ Soap \ WsdlImporter'中,即使它在某些Delphi版本(例如XE3)中被錯誤省略。參見[Delphi-MD5:從Delphi 2007起MessageDigest_5單元已經存在](http://wiert.me/2009/12/11/delphi-md5-the-messagedigest_5-unit-has-been-there-since-delphi -2007 /)。 –
或者你也可以直接使用MD5庫來支持流,['如何使用Delphi的標準函數對ASCII字符串進行單向散列?](http://stackoverflow.com/a/21638594/576719 )。 –
我對此並不是很熟悉,但你看看這裏: http://sourceforge.net/projects/jedi-apilib/ 具體來說,http://sourceforge.net/p/jedi-apilib/代碼/ HEAD/tree/jwapi/trunk/Win32API/JwaWinCrypt.pas – MikeD